35,7 → 35,6 |
#ifndef KERN_CHARDEV_H_ |
#define KERN_CHARDEV_H_ |
|
#include <typedefs.h> |
#include <arch/types.h> |
#include <synch/waitq.h> |
#include <synch/spinlock.h> |
42,19 → 41,19 |
|
#define CHARDEV_BUFLEN 512 |
|
struct chardev; |
|
/* Character device operations interface. */ |
struct chardev_operations { |
void (* suspend)(chardev_t *); /**< Suspend pushing characters. */ |
void (* resume)(chardev_t *); /**< Resume pushing characters. */ |
void (* write)(chardev_t *, char c); /**< Write character to stream. */ |
typedef struct { |
void (* suspend)(struct chardev *); /**< Suspend pushing characters. */ |
void (* resume)(struct chardev *); /**< Resume pushing characters. */ |
void (* write)(struct chardev *, char c); /**< Write character to stream. */ |
/** Read character directly from device, assume interrupts disabled */ |
char (* read)(chardev_t *); |
}; |
char (* read)(struct chardev *); |
} chardev_operations_t; |
|
typedef struct chardev_operations chardev_operations_t; |
|
/** Character input device. */ |
struct chardev { |
typedef struct chardev { |
char *name; |
|
waitq_t wq; |
64,7 → 63,7 |
chardev_operations_t *op; /**< Implementation of chardev operations. */ |
index_t index; |
void *data; |
}; |
} chardev_t; |
|
extern void chardev_initialize(char *name, |
chardev_t *chardev, |