26 lines
593 B
C
26 lines
593 B
C
#ifndef __KERNEL_DEVICES_DEVICE_H__
|
|
# define __KERNEL_DEVICES_DEVICE_H__
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <kernel/fs/filesystem.h>
|
|
|
|
#define dev_get_major(dev) (dev & 0xff00)
|
|
#define dev_get_minor(dev) (dev & 0x00ff)
|
|
#define dev_make_major(major) ((major & 0xff) << 8)
|
|
|
|
#define DEVICE(name) \
|
|
__attribute__((section(".device"))) \
|
|
static struct device name##_dev
|
|
|
|
// Struct used to define device
|
|
struct device
|
|
{
|
|
dev_t major;
|
|
void *(*open)(dev_t major, dev_t minor);
|
|
struct file_operations file_op;
|
|
int (*close)(void *inode);
|
|
};
|
|
|
|
#endif /*__KERNEL_DEVICES_DEVICE_H__*/
|