Created
[fw/sdcc] / support / regression / tests / driverstruct.c
1 /** Tests a few features of a driver struct - a struct with
2     many function pointers.
3 */
4 #include <testfwk.h>
5
6 /* Set to one to show the bug */
7 #if 0
8 #define NAME(_a)        _a
9 #else
10 #define NAME(_a)
11 #endif
12
13 typedef unsigned char uchar;
14
15 /* Originally from UZIX - http://uzix.sourceforge.net/
16  */
17
18 typedef struct s_devsw {
19         uchar   minors;         /* # of minor device numbers */
20         int     (*dev_init)(uchar NAME(minor));
21         int     (*dev_open)(uchar NAME(minor));
22         int     (*dev_close)(uchar NAME(minor));
23         int     (*dev_read)(uchar NAME(minor), uchar NAME(w));
24         int     (*dev_write)(uchar NAME(minor), uchar NAME(w));
25         int     (*dev_ioctl)(uchar NAME(minor), int cmd, void *data);
26 } devsw_t;
27
28 static int
29 _init(uchar minor)
30 {
31   return minor;
32 }
33
34 static devsw_t _sillyDriver = {
35   1,
36   _init,
37   NULL, NULL, NULL, NULL, NULL
38 };
39
40 int
41 initProxy(void)
42 {
43   return (*_sillyDriver.dev_init)(5);
44 }
45