Schnellreferenz

In diesem Kapitel wurden die folgenden Symbole und Header-Dateien eingeführt. Die Liste der Felder in struct file_operations und struct file wird hier nicht wiederholt.

#include <linux/fs.h>

Die Dateisystem-Header-Datei wird zum Schreiben von Gerätetreibern benötigt. Alle wichtigen Funktionen sind hier definiert.

int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);

Registriert einen Zeichen-Gerätetreiber. Wenn die Major-Nummer nicht Null ist, wird diese unverändert übernommen, wenn die Nummer Null ist, wird eine dynamische Nummer zugewiesen.

int unregister_chrdev(unsigned int major, const char *name);

Deregistriert einen Treiber beim Entladen. Sowohl major als auch name müssen die gleichen Werte wie beim Registrieren enthalten.

kdev_t inode->i_rdev;

Die Geräte-Nummer des aktuellen Geräts steht über das inode-Argument zur Verfügung.

int MAJOR(kdev_t dev);, int MINOR(kdev_t dev);

Diese Makros extrahieren die Major- und Minor-Nummern aus einem Geräte-Wert.

kdev_t MKDEV(int major, int minor);

Dieses Makro erzeugt einen kdev_t-Wert aus den Major- und Minor-Nummern.

SET_MODULE_OWNER(struct file_operations *fops)

Dieses Makro setzt das owner-Feld in der angegebenen file_operations-Struktur.

#include <asm/semaphore.h>

Definiert Funktionen und Typen rund um Semaphore.

void sema_init (struct semaphore *sem, int val);

Initialisiert einen Semaphor mit einem bekannten Wert. Mutexe werden normalerweise mit dem Wert 1 initialisiert.

int down_interruptible (struct semaphore *sem);, void up (struct semaphore *sem);

Holt einen (wenn notwendig schlafenden) Semaphor bzw. gibt ihn wieder frei.

#include <asm/segment.h>, #include <asm/uaccess.h>

segment.h definiert Funktionen, die zum Kopieren von Daten zwischen User-Space und Kernel-Space in allen Kerneln bis einschließlich 2.0 verwendet werden. In Version 2.1 wurde der Name der Header-Datei in uaccess.h geändert.

unsigned long _ _copy_from_user (void *to, const void *from, unsigned long count);, unsigned long _ _copy_to_user (void *to, const void *from, unsigned long count);

Kopiert Daten zwischen User-Space und Kernel-Space.

void memcpy_fromfs(void *to, const void *from, unsigned long count);, void memcpy_tofs(void *to, const void *from, unsigned long count);

Diese Funktionen wurden in der Kernel-Version 2.0 dazu benutzt, ein Array von Bytes zwischen dem User-Space und dem Kernel-Space hin- und herzukopieren.

#include <linux/devfs_fs_kernel.h>, devfs_handle_t devfs_mk_dir (devfs_handle_t dir, const char *name, void *info);, devfs_handle_t devfs_register (devfs_handle_t dir, const char *name, unsigned int flags,, unsigned int major, unsigned int minor, umode_t mode, void *ops, void *info);, void devfs_unregister (devfs_handle_t de);

Die grundlegenden Funktionen zum Registrieren von Geräten im Geräte-Dateisystem (devfs).