1 typedef unsigned int dev_t;
2 typedef unsigned int kdev_t;
3
to_kdev_t(int dev)4 static inline kdev_t to_kdev_t(int dev)
5 {
6 int major, minor;
7
8 if (sizeof(kdev_t) == 16)
9 return (kdev_t)dev;
10 major = (dev >> 8);
11 minor = (dev & 0xff);
12 return ((( major ) << 22 ) | ( minor )) ;
13
14 }
15
do_mknod(const char * filename,int mode,kdev_t dev)16 void do_mknod(const char * filename, int mode, kdev_t dev)
17 {
18 if (dev==0x15800078)
19 exit(0);
20 else
21 abort();
22 }
23
24
getname(const char * filename)25 char * getname(const char * filename)
26 {
27 register unsigned int a1,a2,a3,a4,a5,a6,a7,a8,a9;
28 a1 = (unsigned int)(filename) *5 + 1;
29 a2 = (unsigned int)(filename) *6 + 2;
30 a3 = (unsigned int)(filename) *7 + 3;
31 a4 = (unsigned int)(filename) *8 + 4;
32 a5 = (unsigned int)(filename) *9 + 5;
33 a6 = (unsigned int)(filename) *10 + 5;
34 a7 = (unsigned int)(filename) *11 + 5;
35 a8 = (unsigned int)(filename) *12 + 5;
36 a9 = (unsigned int)(filename) *13 + 5;
37 return (char *)(a1*a2+a3*a4+a5*a6+a7*a8+a9);
38 }
39
sys_mknod(const char * filename,int mode,dev_t dev)40 int sys_mknod(const char * filename, int mode, dev_t dev)
41 {
42 int error;
43 char * tmp;
44
45 tmp = getname(filename);
46 error = ((long)( tmp )) ;
47 do_mknod(tmp,mode,to_kdev_t(dev));
48 return error;
49 }
50
main(void)51 int main(void)
52 {
53 if (sizeof (int) != 4)
54 exit (0);
55
56 return sys_mknod("test",1,0x12345678);
57 }
58