58 lines
1.1 KiB
C
58 lines
1.1 KiB
C
typedef unsigned int dev_t;
|
|
typedef unsigned int kdev_t;
|
|
|
|
static inline kdev_t to_kdev_t(int dev)
|
|
{
|
|
int major, minor;
|
|
|
|
if (sizeof(kdev_t) == 16)
|
|
return (kdev_t)dev;
|
|
major = (dev >> 8);
|
|
minor = (dev & 0xff);
|
|
return ((( major ) << 22 ) | ( minor )) ;
|
|
|
|
}
|
|
|
|
void do_mknod(const char * filename, int mode, kdev_t dev)
|
|
{
|
|
if (dev==0x15800078)
|
|
exit(0);
|
|
else
|
|
abort();
|
|
}
|
|
|
|
|
|
char * getname(const char * filename)
|
|
{
|
|
register unsigned int a1,a2,a3,a4,a5,a6,a7,a8,a9;
|
|
a1 = (unsigned int)(filename) *5 + 1;
|
|
a2 = (unsigned int)(filename) *6 + 2;
|
|
a3 = (unsigned int)(filename) *7 + 3;
|
|
a4 = (unsigned int)(filename) *8 + 4;
|
|
a5 = (unsigned int)(filename) *9 + 5;
|
|
a6 = (unsigned int)(filename) *10 + 5;
|
|
a7 = (unsigned int)(filename) *11 + 5;
|
|
a8 = (unsigned int)(filename) *12 + 5;
|
|
a9 = (unsigned int)(filename) *13 + 5;
|
|
return (char *)(a1*a2+a3*a4+a5*a6+a7*a8+a9);
|
|
}
|
|
|
|
int sys_mknod(const char * filename, int mode, dev_t dev)
|
|
{
|
|
int error;
|
|
char * tmp;
|
|
|
|
tmp = getname(filename);
|
|
error = ((long)( tmp )) ;
|
|
do_mknod(tmp,mode,to_kdev_t(dev));
|
|
return error;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
if (sizeof (int) != 4)
|
|
exit (0);
|
|
|
|
return sys_mknod("test",1,0x12345678);
|
|
}
|