All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] device_table question
@ 2011-02-18 16:59 ANDY KENNEDY
  2011-02-20 12:59 ` Thomas De Schampheleire
  0 siblings, 1 reply; 5+ messages in thread
From: ANDY KENNEDY @ 2011-02-18 16:59 UTC (permalink / raw)
  To: buildroot

the comment:

#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>

implies to me that if I want the device nodes:

crwxrwxrwx 1 root root 254,  0 2010-12-22 23:27 mydev1
crwxrwxrwx 1 root root 254,  1 2010-12-22 23:27 mydev2
crwxrwxrwx 1 root root 254,  2 2010-12-22 23:27 mydev3


I should be able to create an entry in the file along the lines of:

mydev    c      666    0           254     0        1      1     24

My assumption is:

Name = base name of the device
Type = type of file (char special)
mode = permissions
uid  = owner of the file
gid  = group associated with the file
major= Device major number
minor= Start of the minor numbers (in this case minor 0 = mydev1)
start= Start of the named numbers (in this case mydev1)
inc  = iteration of both minor numbers and named numbers
count= how many device to make.

FYI I have tried it this way as well as

mydev    c      666    0           254     1        0      1     24

What I end up with is

crwxrwxrwx 1 root root 254,  0 2010-12-22 23:27 mydev0
crwxrwxrwx 1 root root 254,  1 2010-12-22 23:27 mydev1
crwxrwxrwx 1 root root 254,  2 2010-12-22 23:27 mydev2

Which is undesirable for me.

Question:  Are my expectations wrong are is fakeroot/make_devs 
wrong?

Thanks,
Andy

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] device_table question
  2011-02-18 16:59 [Buildroot] device_table question ANDY KENNEDY
@ 2011-02-20 12:59 ` Thomas De Schampheleire
  2011-02-21 16:02   ` ANDY KENNEDY
  2011-02-21 16:34   ` ANDY KENNEDY
  0 siblings, 2 replies; 5+ messages in thread
From: Thomas De Schampheleire @ 2011-02-20 12:59 UTC (permalink / raw)
  To: buildroot

Hi,

On Fri, Feb 18, 2011 at 5:59 PM, ANDY KENNEDY <ANDY.KENNEDY@adtran.com> wrote:
> the comment:
>
> #<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
>
> implies to me that if I want the device nodes:
>
> crwxrwxrwx 1 root root 254, ?0 2010-12-22 23:27 mydev1
> crwxrwxrwx 1 root root 254, ?1 2010-12-22 23:27 mydev2
> crwxrwxrwx 1 root root 254, ?2 2010-12-22 23:27 mydev3
>
>
> I should be able to create an entry in the file along the lines of:
>
> mydev ? ?c ? ? ?666 ? ?0 ? ? ? ? ? 254 ? ? 0 ? ? ? ?1 ? ? ?1 ? ? 24
>
> My assumption is:
>
> Name = base name of the device
> Type = type of file (char special)
> mode = permissions
> uid ?= owner of the file
> gid ?= group associated with the file
> major= Device major number
> minor= Start of the minor numbers (in this case minor 0 = mydev1)
> start= Start of the named numbers (in this case mydev1)
> inc ?= iteration of both minor numbers and named numbers
> count= how many device to make.
>
> FYI I have tried it this way as well as
>
> mydev ? ?c ? ? ?666 ? ?0 ? ? ? ? ? 254 ? ? 1 ? ? ? ?0 ? ? ?1 ? ? 24
>
> What I end up with is
>
> crwxrwxrwx 1 root root 254, ?0 2010-12-22 23:27 mydev0
> crwxrwxrwx 1 root root 254, ?1 2010-12-22 23:27 mydev1
> crwxrwxrwx 1 root root 254, ?2 2010-12-22 23:27 mydev2
>
> Which is undesirable for me.
>
> Question: ?Are my expectations wrong are is fakeroot/make_devs
> wrong?

I tried your scenario with the following device table line:

/dev/mybetterdev         c       640     0       0       230     0
  1       1       10

which resulted in:

crw-r----- 1 root root 230, 0 2011-02-20 10:42 /mnt/dev/mybetterdev1
crw-r----- 1 root root 230, 1 2011-02-20 10:42 /mnt/dev/mybetterdev2
crw-r----- 1 root root 230, 2 2011-02-20 10:42 /mnt/dev/mybetterdev3
crw-r----- 1 root root 230, 3 2011-02-20 10:42 /mnt/dev/mybetterdev4
crw-r----- 1 root root 230, 4 2011-02-20 10:42 /mnt/dev/mybetterdev5
crw-r----- 1 root root 230, 5 2011-02-20 10:42 /mnt/dev/mybetterdev6
crw-r----- 1 root root 230, 6 2011-02-20 10:42 /mnt/dev/mybetterdev7
crw-r----- 1 root root 230, 7 2011-02-20 10:42 /mnt/dev/mybetterdev8
crw-r----- 1 root root 230, 8 2011-02-20 10:42 /mnt/dev/mybetterdev9

This is what you wanted, right?

Note that you seem to have forgotten one field in your device table
lines: I count only 9 fields, while you should have 10 (or is this a
typeover mistake?)

The above was tested with Buildroot 2010.05.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] device_table question
  2011-02-20 12:59 ` Thomas De Schampheleire
@ 2011-02-21 16:02   ` ANDY KENNEDY
  2011-02-21 16:34   ` ANDY KENNEDY
  1 sibling, 0 replies; 5+ messages in thread
From: ANDY KENNEDY @ 2011-02-21 16:02 UTC (permalink / raw)
  To: buildroot

> 
> I tried your scenario with the following device table line:
> 
> /dev/mybetterdev         c       640     0       0       230     0
>   1       1       10
> 
> which resulted in:
> 
> crw-r----- 1 root root 230, 0 2011-02-20 10:42 /mnt/dev/mybetterdev1
> crw-r----- 1 root root 230, 1 2011-02-20 10:42 /mnt/dev/mybetterdev2
> crw-r----- 1 root root 230, 2 2011-02-20 10:42 /mnt/dev/mybetterdev3
> crw-r----- 1 root root 230, 3 2011-02-20 10:42 /mnt/dev/mybetterdev4
> crw-r----- 1 root root 230, 4 2011-02-20 10:42 /mnt/dev/mybetterdev5
> crw-r----- 1 root root 230, 5 2011-02-20 10:42 /mnt/dev/mybetterdev6
> crw-r----- 1 root root 230, 6 2011-02-20 10:42 /mnt/dev/mybetterdev7
> crw-r----- 1 root root 230, 7 2011-02-20 10:42 /mnt/dev/mybetterdev8
> crw-r----- 1 root root 230, 8 2011-02-20 10:42 /mnt/dev/mybetterdev9

Nope, if the above is a direct paste, nope, that's wrong.  You have
nine devices up there, you asked for 10.
 
> This is what you wanted, right?
> 
> Note that you seem to have forgotten one field in your device table
> lines: I count only 9 fields, while you should have 10 (or is this a
> typeover mistake?)

I must have backspaced through one of the numbers

> 
> The above was tested with Buildroot 2010.05.
> 
> Best regards,
> Thomas

What I did (which works) is:

/dev/mydev   c  666   0   0   254    1   1   1   24

which actually gives 24 devices from 0 - 23 with names mydev[1-24].

As long as it is 100% reproducible, I'm okay with this solution.

Andy

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] device_table question
  2011-02-20 12:59 ` Thomas De Schampheleire
  2011-02-21 16:02   ` ANDY KENNEDY
@ 2011-02-21 16:34   ` ANDY KENNEDY
  2011-02-21 19:54     ` Thomas De Schampheleire
  1 sibling, 1 reply; 5+ messages in thread
From: ANDY KENNEDY @ 2011-02-21 16:34 UTC (permalink / raw)
  To: buildroot

> 
> I tried your scenario with the following device table line:
> 
> /dev/mybetterdev         c       640     0       0       230     0
>   1       1       10
> 
> which resulted in:
> 
> crw-r----- 1 root root 230, 0 2011-02-20 10:42 /mnt/dev/mybetterdev1
> crw-r----- 1 root root 230, 1 2011-02-20 10:42 /mnt/dev/mybetterdev2
> crw-r----- 1 root root 230, 2 2011-02-20 10:42 /mnt/dev/mybetterdev3
> crw-r----- 1 root root 230, 3 2011-02-20 10:42 /mnt/dev/mybetterdev4
> crw-r----- 1 root root 230, 4 2011-02-20 10:42 /mnt/dev/mybetterdev5
> crw-r----- 1 root root 230, 5 2011-02-20 10:42 /mnt/dev/mybetterdev6
> crw-r----- 1 root root 230, 6 2011-02-20 10:42 /mnt/dev/mybetterdev7
> crw-r----- 1 root root 230, 7 2011-02-20 10:42 /mnt/dev/mybetterdev8
> crw-r----- 1 root root 230, 8 2011-02-20 10:42 /mnt/dev/mybetterdev9
> 
> This is what you wanted, right?

Crap, I feel into the same trap:

/dev/mydev   c  666   0   0   254    1   1   1   24

gives the following (and I didn't see that until just now):

crw-rw-rw-    1 root     root      254,   1 Feb 18  2011 /dev/mydev1
crw-rw-rw-    1 root     root      254,  10 Feb 18  2011 /dev/mydev10
crw-rw-rw-    1 root     root      254,  11 Feb 18  2011 /dev/mydev11
crw-rw-rw-    1 root     root      254,  12 Feb 18  2011 /dev/mydev12
crw-rw-rw-    1 root     root      254,  13 Feb 18  2011 /dev/mydev13
crw-rw-rw-    1 root     root      254,  14 Feb 18  2011 /dev/mydev14
crw-rw-rw-    1 root     root      254,  15 Feb 18  2011 /dev/mydev15
crw-rw-rw-    1 root     root      254,  16 Feb 18  2011 /dev/mydev16
crw-rw-rw-    1 root     root      254,  17 Feb 18  2011 /dev/mydev17
crw-rw-rw-    1 root     root      254,  18 Feb 18  2011 /dev/mydev18
crw-rw-rw-    1 root     root      254,  19 Feb 18  2011 /dev/mydev19
crw-rw-rw-    1 root     root      254,   2 Feb 18  2011 /dev/mydev2
crw-rw-rw-    1 root     root      254,  20 Feb 18  2011 /dev/mydev20
crw-rw-rw-    1 root     root      254,  21 Feb 18  2011 /dev/mydev21
crw-rw-rw-    1 root     root      254,  22 Feb 18  2011 /dev/mydev22
crw-rw-rw-    1 root     root      254,  23 Feb 18  2011 /dev/mydev23
crw-rw-rw-    1 root     root      254,   3 Feb 18  2011 /dev/mydev3
crw-rw-rw-    1 root     root      254,   4 Feb 18  2011 /dev/mydev4
crw-rw-rw-    1 root     root      254,   5 Feb 18  2011 /dev/mydev5
crw-rw-rw-    1 root     root      254,   6 Feb 18  2011 /dev/mydev6
crw-rw-rw-    1 root     root      254,   7 Feb 18  2011 /dev/mydev7
crw-rw-rw-    1 root     root      254,   8 Feb 18  2011 /dev/mydev8
crw-rw-rw-    1 root     root      254,   9 Feb 18  2011 /dev/mydev9

and my device minor numbers were wrong.  This was the fix:

/dev/mydev   c  666  0 0 254 0 1 1 25

Though, I would love for someone to answer the question of "why do
I have to request 25 device nodes to get 24?"

The below is the way I wanted it:

crw-rw-rw- 1 root root 254,  0 2011-02-21 10:19 mydev1
crw-rw-rw- 1 root root 254,  9 2011-02-21 10:19 mydev10
crw-rw-rw- 1 root root 254, 10 2011-02-21 10:19 mydev11
crw-rw-rw- 1 root root 254, 11 2011-02-21 10:19 mydev12
crw-rw-rw- 1 root root 254, 12 2011-02-21 10:19 mydev13
crw-rw-rw- 1 root root 254, 13 2011-02-21 10:19 mydev14
crw-rw-rw- 1 root root 254, 14 2011-02-21 10:19 mydev15
crw-rw-rw- 1 root root 254, 15 2011-02-21 10:19 mydev16
crw-rw-rw- 1 root root 254, 16 2011-02-21 10:19 mydev17
crw-rw-rw- 1 root root 254, 17 2011-02-21 10:19 mydev18
crw-rw-rw- 1 root root 254, 18 2011-02-21 10:19 mydev19
crw-rw-rw- 1 root root 254,  1 2011-02-21 10:19 mydev2
crw-rw-rw- 1 root root 254, 19 2011-02-21 10:19 mydev20
crw-rw-rw- 1 root root 254, 20 2011-02-21 10:19 mydev21
crw-rw-rw- 1 root root 254, 21 2011-02-21 10:19 mydev22
crw-rw-rw- 1 root root 254, 22 2011-02-21 10:19 mydev23
crw-rw-rw- 1 root root 254, 23 2011-02-21 10:19 mydev24
crw-rw-rw- 1 root root 254,  2 2011-02-21 10:19 mydev3
crw-rw-rw- 1 root root 254,  3 2011-02-21 10:19 mydev4
crw-rw-rw- 1 root root 254,  4 2011-02-21 10:19 mydev5
crw-rw-rw- 1 root root 254,  5 2011-02-21 10:19 mydev6
crw-rw-rw- 1 root root 254,  6 2011-02-21 10:19 mydev7
crw-rw-rw- 1 root root 254,  7 2011-02-21 10:19 mydev8
crw-rw-rw- 1 root root 254,  8 2011-02-21 10:19 mydev9
 
> Note that you seem to have forgotten one field in your device table
> lines: I count only 9 fields, while you should have 10 (or is this a
> typeover mistake?)
> 
> The above was tested with Buildroot 2010.05.
> 
> Best regards,
> Thomas

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] device_table question
  2011-02-21 16:34   ` ANDY KENNEDY
@ 2011-02-21 19:54     ` Thomas De Schampheleire
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas De Schampheleire @ 2011-02-21 19:54 UTC (permalink / raw)
  To: buildroot

Hi Andy,

On Mon, Feb 21, 2011 at 5:34 PM, ANDY KENNEDY <ANDY.KENNEDY@adtran.com> wrote:
>>
>> I tried your scenario with the following device table line:
>>
>> /dev/mybetterdev ? ? ? ? c ? ? ? 640 ? ? 0 ? ? ? 0 ? ? ? 230 ? ? 0
>> ? 1 ? ? ? 1 ? ? ? 10
>>
>> which resulted in:
>>
>> crw-r----- 1 root root 230, 0 2011-02-20 10:42 /mnt/dev/mybetterdev1
>> crw-r----- 1 root root 230, 1 2011-02-20 10:42 /mnt/dev/mybetterdev2
>> crw-r----- 1 root root 230, 2 2011-02-20 10:42 /mnt/dev/mybetterdev3
>> crw-r----- 1 root root 230, 3 2011-02-20 10:42 /mnt/dev/mybetterdev4
>> crw-r----- 1 root root 230, 4 2011-02-20 10:42 /mnt/dev/mybetterdev5
>> crw-r----- 1 root root 230, 5 2011-02-20 10:42 /mnt/dev/mybetterdev6
>> crw-r----- 1 root root 230, 6 2011-02-20 10:42 /mnt/dev/mybetterdev7
>> crw-r----- 1 root root 230, 7 2011-02-20 10:42 /mnt/dev/mybetterdev8
>> crw-r----- 1 root root 230, 8 2011-02-20 10:42 /mnt/dev/mybetterdev9
>>
>> This is what you wanted, right?
>
> Crap, I feel into the same trap:
>
> /dev/mydev ? c ?666 ? 0 ? 0 ? 254 ? ?1 ? 1 ? 1 ? 24
>
> gives the following (and I didn't see that until just now):
>
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 1 Feb 18 ?2011 /dev/mydev1
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?10 Feb 18 ?2011 /dev/mydev10
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?11 Feb 18 ?2011 /dev/mydev11
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?12 Feb 18 ?2011 /dev/mydev12
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?13 Feb 18 ?2011 /dev/mydev13
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?14 Feb 18 ?2011 /dev/mydev14
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?15 Feb 18 ?2011 /dev/mydev15
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?16 Feb 18 ?2011 /dev/mydev16
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?17 Feb 18 ?2011 /dev/mydev17
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?18 Feb 18 ?2011 /dev/mydev18
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?19 Feb 18 ?2011 /dev/mydev19
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 2 Feb 18 ?2011 /dev/mydev2
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?20 Feb 18 ?2011 /dev/mydev20
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?21 Feb 18 ?2011 /dev/mydev21
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?22 Feb 18 ?2011 /dev/mydev22
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ?23 Feb 18 ?2011 /dev/mydev23
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 3 Feb 18 ?2011 /dev/mydev3
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 4 Feb 18 ?2011 /dev/mydev4
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 5 Feb 18 ?2011 /dev/mydev5
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 6 Feb 18 ?2011 /dev/mydev6
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 7 Feb 18 ?2011 /dev/mydev7
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 8 Feb 18 ?2011 /dev/mydev8
> crw-rw-rw- ? ?1 root ? ? root ? ? ?254, ? 9 Feb 18 ?2011 /dev/mydev9
>
> and my device minor numbers were wrong. ?This was the fix:
>
> /dev/mydev ? c ?666 ?0 0 254 0 1 1 25
>
> Though, I would love for someone to answer the question of "why do
> I have to request 25 device nodes to get 24?"

A quick look at the code reveals why:
http://git.buildroot.net/buildroot/tree/target/makedevs/makedevs.c?h=2010.11&id=eb0ee4509d3112d80cbb210b44fb682ba7033385#n459

for (i = start; i < count; i++) {
	sprintf(full_name_inc, "%s%d", full_name, i);
	rdev = (major << 8) + minor + (i * increment - start);
	if (mknod(full_name_inc, mode, rdev) == -1) {
		...
	}
	...
}

where start, increment and count are the three last numbers in the
device table file.
So, 'count' is not coded as a count, but rather as a maximum value - 1.

I'm not sure what the best solution would be: either to keep the code
and fix the documentation, or to fix the code based on the
documentation.

Changing 'i < count' to 'i < start + count' should fix the code.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-02-21 19:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-18 16:59 [Buildroot] device_table question ANDY KENNEDY
2011-02-20 12:59 ` Thomas De Schampheleire
2011-02-21 16:02   ` ANDY KENNEDY
2011-02-21 16:34   ` ANDY KENNEDY
2011-02-21 19:54     ` Thomas De Schampheleire

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.