GadgetSeed  0.9.6
skel_dev.c
[詳解]
1 /** @file
2  @brief デバイスドライバのスケルトン
3 
4  @date 日時を記述
5  @authoer 作成者名を記述
6 */
7 
8 #include "device.h"
9 #include "interrupt.h"
10 
11 static int skel_addr;
12 
13 void skel_inthdr(unsigned int intnum, void *sp)
14 {
15 }
16 
17 static int skel_register(char *param)
18 {
19  skel_addr = 0;
20 
21  register_interrpt(VECTNUM, skel_inthdr);
22 
23  return 0;
24 }
25 
26 static int skel_unregister(void)
27 {
28  return 0;
29 }
30 
31 static int skel_open(void)
32 {
33  return 0;
34 }
35 
36 static int skel_close(void)
37 {
38  return 0;
39 }
40 
41 static int skel_read(void *buf, unsigned int count)
42 {
43  return count;
44 }
45 
46 static int skel_getc(unsigned char *data)
47 {
48  return 1;
49 }
50 
51 static int skel_write(const void *buf, unsigned int count)
52 {
53  return count;
54 }
55 
56 static int skel_putc(unsigned char data)
57 {
58  return 1;
59 }
60 
61 static int skel_ioctl(unsigned int com, unsigned int arg, void *param)
62 {
63  return 0;
64 }
65 
66 static int skel_seek(int offset, int whence)
67 {
68  switch(whence) {
69  case SEEK_SET:
70  skel_addr = offset;
71  break;
72 
73  case SEEK_CUR:
74  skel_addr += offset;
75  break;
76 
77  case SEEK_END:
78  break;
79 
80  default:
81  return -1;
82  }
83 
84  return skel_addr;
85 }
86 
87 const device skel_device = {
88  .name = "skel",
89  .explan = "Explan device",
90  .register_dev = skel_register,
91  .unregister_dev = skel_unregister,
92  .open = skel_open,
93  .close = skel_close,
94  .read = skel_read,
95  .getc = skel_getc,
96  .write = skel_write,
97  .putc = skel_putc,
98  .ioctl = skel_ioctl,
99  .seek = skel_seek,
100 };
割り込みハンドラ
#define SEEK_SET
設定
Definition: device.h:21
デバイスドライバAPI
#define SEEK_END
ファイルサイズに加算
Definition: device.h:23
#define SEEK_CUR
現在値に加算
Definition: device.h:22