-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathshannon_device.h
More file actions
73 lines (59 loc) · 2.59 KB
/
Copy pathshannon_device.h
File metadata and controls
73 lines (59 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef __SHANNON_DEVICE_H
#define __SHANNON_DEVICE_H
#include "shannon_kcore.h"
#include "shannon_workqueue.h"
#include "shannon_block.h"
#include "shannon_file.h"
struct __shannon_cdev {
RESERVE_MEM(256); // 144bits in 2.6.18, 104bits in 2.6.32
};
typedef struct __shannon_cdev shannon_cdev_t;
struct __shannon_miscdevice {
RESERVE_MEM(256);
};
typedef struct __shannon_miscdevice shannon_miscdevice_t;
extern struct file_operations shannon_ctrl_cdev_fops;
extern struct file_operations debug_cdev_fops;
struct debug_cdev {
#define MAPTABLE_MEMBLOCK_TYPE (0x11)
#define TEMPTABLE_MEMBLOCK_TYPE (0x22)
#define NORMAL_TYPE (0x33)
char type;
int minor;
char *buf;
unsigned long size;
shannon_cdev_t cdev;
};
typedef void shannon_class_t;
typedef void shannon_module_t;
typedef unsigned int shannon_dev_t;
extern void *shannon_get_this_module(void);
shannon_dev_t SHANNON_MAJOR(shannon_dev_t dev);
shannon_dev_t SHANNON_MINOR(shannon_dev_t dev);
shannon_dev_t SHANNON_MKDEV(shannon_dev_t ma, shannon_dev_t mi);
// device.h
extern shannon_device_t *shannon_device_create(shannon_class_t *class, shannon_device_t *parent,
shannon_dev_t devt, void *drvdata, const char *fmt, ...);
extern void shannon_device_destroy(shannon_class_t *cls, shannon_dev_t devt);
extern shannon_class_t *shannon_class_create(shannon_module_t *owner, char *name);
extern void shannon_class_destroy(shannon_class_t *cls);
// cdev.h
extern int shannon_cdev_add(shannon_cdev_t *p, dev_t dev, unsigned count);
extern void shannon_cdev_del(shannon_cdev_t *p);
extern void shannon_cdev_init(shannon_cdev_t *cdev, const shannon_file_operations_t *fops);
extern void shannon_init_debug_cdev(shannon_cdev_t *cdev);
extern void shannon_set_cdev_owner_this_module(shannon_cdev_t *cdev);
// fs.h
extern int shannon_alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name);
extern void shannon_unregister_chrdev_region(dev_t from, unsigned count);
// disk statistics
extern int shannon_disk_in_flight(shannon_gendisk_t *gdt);
extern void shannon_start_io_acct(shannon_gendisk_t *gdt, shannon_bio_t *bio);
extern void shannon_end_io_acct(shannon_gendisk_t *gdt, shannon_bio_t *bio, unsigned long duration);
extern unsigned long shannon_read_sectors(shannon_gendisk_t *gdt);
extern unsigned long shannon_write_sectors(shannon_gendisk_t *gdt);
extern unsigned long shannon_read_ios(shannon_gendisk_t *gdt);
extern unsigned long shannon_write_ios(shannon_gendisk_t *gdt);
extern unsigned long shannon_read_msecs(shannon_gendisk_t *gdt);
extern unsigned long shannon_write_msecs(shannon_gendisk_t *gdt);
#endif /* __SHANNON_DEVICE_H */