version 1.1.1.1, 2008/06/03 10:38:41 |
version 1.1.1.1.2.1, 2008/08/13 17:12:24 |
|
|
#include <conf/config.h> |
#include <conf/config.h> |
#include <sys/cdefs.h> |
#include <sys/cdefs.h> |
#include <sys/param.h> |
#include <sys/param.h> |
#include <sys/null.h> |
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/errno.h> |
#include <sys/errno.h> |
#include <sys/list.h> |
#include <sys/list.h> |
|
|
*/ |
*/ |
typedef unsigned long device_t; |
typedef unsigned long device_t; |
typedef unsigned long task_t; |
typedef unsigned long task_t; |
|
typedef unsigned long irq_t; |
|
|
#define NULL_DEVICE ((device_t)0) |
#define DEVICE_NULL ((device_t)0) |
#define NULL_TASK ((task_t)0) |
#define TASK_NULL ((task_t)0) |
|
#define IRQ_NULL ((irq_t)0) |
|
|
/* |
/* |
* Driver structure |
* Driver structure |
|
|
int (*close) (device_t dev); |
int (*close) (device_t dev); |
int (*read) (device_t dev, char *buf, size_t *nbyte, int blkno); |
int (*read) (device_t dev, char *buf, size_t *nbyte, int blkno); |
int (*write) (device_t dev, char *buf, size_t *nbyte, int blkno); |
int (*write) (device_t dev, char *buf, size_t *nbyte, int blkno); |
int (*ioctl) (device_t dev, int cmd, u_long arg); |
int (*ioctl) (device_t dev, u_long arg, void *); |
int (*event) (int event); |
int (*event) (int event); |
}; |
}; |
|
|
|
|
const char *name; /* pointer to event name string */ |
const char *name; /* pointer to event name string */ |
}; |
}; |
|
|
#define EVENT_INIT(event, evt_name) \ |
|
{ {&(event).sleepq, &(event).sleepq}, evt_name} |
|
|
|
#define event_init(event, evt_name) \ |
#define event_init(event, evt_name) \ |
do { list_init(&(event)->sleepq); (event)->name = evt_name; } while (0) |
do { list_init(&(event)->sleepq); (event)->name = evt_name; } while (0) |
|
|
|
|
*/ |
*/ |
#define DUMP_THREAD 1 |
#define DUMP_THREAD 1 |
#define DUMP_TASK 2 |
#define DUMP_TASK 2 |
#define DUMP_OBJECT 3 |
#define DUMP_VM 3 |
#define DUMP_TIMER 4 |
|
#define DUMP_IRQ 5 |
|
#define DUMP_DEVICE 6 |
|
#define DUMP_VM 7 |
|
#define DUMP_MSGLOG 8 |
|
#define DUMP_TRACE 9 |
|
|
|
__BEGIN_DECLS |
__BEGIN_DECLS |
device_t device_create(struct devio *io, const char *name, int flags); |
device_t device_create(struct devio *io, const char *name, int flags); |
int device_destroy(device_t dev); |
int device_destroy(device_t dev); |
int device_broadcast(int event, int force); |
int device_broadcast(int event, int force); |
|
|
int umem_copyin(void *uaddr, void *kaddr, size_t len); |
int umem_copyin(const void *uaddr, void *kaddr, size_t len); |
int umem_copyout(void *kaddr, void *uaddr, size_t len); |
int umem_copyout(const void *kaddr, void *uaddr, size_t len); |
int umem_strnlen(const char *uaddr, size_t maxlen, size_t *len); |
int umem_strnlen(const char *uaddr, size_t maxlen, size_t *len); |
|
|
void *kmem_alloc(size_t size); |
void *kmem_alloc(size_t size); |
|
|
void *kmem_map(void *addr, size_t size); |
void *kmem_map(void *addr, size_t size); |
|
|
void *page_alloc(size_t size); |
void *page_alloc(size_t size); |
void page_free(void *addr, size_t size); |
void page_free(void *paddr, size_t size); |
int page_reserve(void *addr, size_t size); |
int page_reserve(void *paddr, size_t size); |
|
|
int irq_attach(int irqno, int level, int shared, int (*isr)(int), void (*ist)(int)); |
irq_t irq_attach(int irqno, int level, int shared, int (*isr)(int), void (*ist)(int)); |
void irq_detach(int handle); |
void irq_detach(irq_t irq); |
void irq_lock(void); |
void irq_lock(void); |
void irq_unlock(void); |
void irq_unlock(void); |
|
|
void timer_callout(struct timer *tmr, void (*func)(u_long), u_long arg, u_long msec); |
void timer_callout(struct timer *tmr, u_long msec, void (*func)(void *), void *arg); |
void timer_stop(struct timer *tmr); |
void timer_stop(struct timer *tmr); |
u_long timer_delay(u_long msec); |
u_long timer_delay(u_long msec); |
u_long timer_count(void); |
u_long timer_count(void); |
|
|
void debug_attach(void (*func)(char *)); |
void debug_attach(void (*func)(char *)); |
int debug_dump(int index); |
int debug_dump(int index); |
|
|
|
void printf(const char *fmt, ...); |
|
void panic(const char *msg); |
#ifdef DEBUG |
#ifdef DEBUG |
void printk(const char *fmt, ...); |
|
void panic(const char *fmt, ...); |
|
void assert(const char *file, int line, const char *exp); |
void assert(const char *file, int line, const char *exp); |
#define ASSERT(exp) do { if (!(exp)) \ |
#define ASSERT(exp) do { if (!(exp)) \ |
assert(__FILE__, __LINE__, #exp); } while (0) |
assert(__FILE__, __LINE__, #exp); } while (0) |
#else |
#else |
#define printk(fmt...) do {} while (0) |
#define ASSERT(exp) do {} while (0) |
#define panic(fmt...) do { for (;;) ; } while (0) |
|
#define ASSERT(exp) |
|
#endif |
#endif |
|
|
|
void driver_main(void); |
__END_DECLS |
__END_DECLS |
|
|
#endif /* !_DRIVER_H */ |
#endif /* !_DRIVER_H */ |