Robert Wrote [mailto:[EMAIL PROTECTED]
>
> On Tue, 11 Mar 2008, Khem Raj wrote:
>
> >
> > On Mar 11, 2008, at 11:03 PM, Basheer, Mansoor Ahamed wrote:
> >
> > > Hi,
> > >
> > > Current mknod implementation fails for major/minor number greater
than
> 255.
> >
> > is linux kernel supporting major/minor numbers greater than 255 ?
>
> the *kernel* supports major/minor numbers of bit length (12,20). it's
> only userspace that restricts their values to (8,8).
>
Yes Robert you are right. For example USB endpoint devices use major 442
(drivers/usb/core/endpoint.c).
Also, __kernel_dev_t for ARM should be "unsigned int" and not "unsigned
short".
Signed-off-by: Mansoor Ahamed <[EMAIL PROTECTED]>
--- libc/sysdeps/linux/common/mknod.c 2008-03-11 17:43:54.000000000
+0530
+++ libc/sysdeps/linux/common/mknod.c 2008-03-11 17:45:21.000000000
+++ +0530
@@ -20,9 +20,8 @@ static inline _syscall3(int, __syscall_m int
mknod(const char *path, mode_t mode, dev_t dev) {
/* We must convert the dev_t value to a __kernel_dev_t */
- __kernel_dev_t k_dev;
+ __kernel_dev_t k_dev = (__kernel_dev_t)dev;
- k_dev = ((major(dev) & 0xff) << 8) | (minor(dev) & 0xff);
return __syscall_mknod(path, mode, k_dev); }
libc_hidden_def(mknod)
--- libc/sysdeps/linux/arm/bits/kernel_types.h
+++ libc/sysdeps/linux/arm/bits/kernel_types.h
@@ -7,7 +7,7 @@
#ifndef __ARCH_ARM_POSIX_TYPES_H
#define __ARCH_ARM_POSIX_TYPES_H
-typedef unsigned short __kernel_dev_t;
+typedef unsigned int __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
typedef unsigned short __kernel_nlink_t;
@@ -31,7 +31,7 @@
typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;
typedef long long __kernel_loff_t;
-typedef __kernel_dev_t __kernel_old_dev_t;
+typedef unsigned short __kernel_old_dev_t;
typedef struct {
#ifdef __USE_ALL
-Mansoor
_______________________________________________
uClibc mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/uclibc