Skip to content

DaiZhiyuan/ivshmem-guest-code

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the code repository for the shared memory device for KVM/Qemu.  This
GIT repository contains code and scripts that demonstrate how to make use of
the shared memory device.  I use the name 'Nahanni' to refer to my device and
system.  It is not that the system is so substantial that it requires its own
name, but having a name makes discussion easier.

The Device
----------

The device specification is in the file device-spec.txt.  If you want to write
a device driver for a different OS than Linux, the device spec will describe
how the device works.

Directories in this repo
------------------------

kernel_module - Linux kernel modules and makefiles to build them against the
currently running kernel.  There are two kinds of drivers.  "Normal" pci
drivers and then UIO_PCI drivers.  UIO_PCI is a relatively recent driver model
that seeks to move as much functionality in to userspace as possible.  With
UIO_PCI, device registers and memory regions are usually mapped to userspace
and accessed directly which has certain advantages.

scripts - these aren't shared memory scripts, but are networking scripts when
using DNSmasq for networking.  Perhaps they don't belong here.

startup_files - these are Linux init scripts for different Linux distros namely
ubuntu, fedora and SUSE.  Init scripts formats can change and so some tweaking
may be necessary for newer versions of distros.

    there is also a UIO_PCI init script which is different than regular device
init scripts.

tests - test programs for using shared memory device WITHOUT UIO_PCI.  These
tests rely on mmap to access the shared region and ioctl calls to trigger
interrupts in other guests.

uio - test programs for the UIO driver that uses the assigned mappings of
registers and memory to trigger notifications rather than ioctl calls as in the
other 'tests' directory.

Releases

No releases published

Packages

No packages published

Languages

  • C 64.2%
  • Java 24.1%
  • Shell 5.8%
  • Makefile 2.8%
  • C++ 1.3%
  • CMake 1.0%
  • Python 0.8%