Non-atomic __set_bit
parisc,
Walking the source for devfs and thinking about Alberts problem.
Would the non-working devfs be fixed by adding:
Non-atomic versions of set_bit e.g. __set_bit and test_and_set_bit e.g. __test_and_set_bit to linux/include/asm-parisc/bitops.h?
I have the latest CVS linux module.
I've patched against that. It compiles now ;) (god bless make -j8)
I'm currently sleepy, but I'll post the patch, and test it tommorow on a 712/60 and 715/50.
c.
linux/include/asm-parisc/bitops.h.mod renamed from linux/include/asm-parisc/bitops.h.orig +39 -0
@@ -50,6 +50,26 @@ SPIN_UNLOCK_IRQRESTORE(ATOMIC_HASH(addr), flags); } +/* + * Non-Atomic __set_bit + * + * If called by multiple processes, only one will succeed. + * The others would have been reordered before the succeeding + * call. + * + */ + +static __inline__ void __set_bit(int nr, void * address) +{ + unsigned long mask; + unsigned long *addr = (unsigned long *) address; + + addr += (nr >> SHIFT_PER_LONG); + mask = 1L << CHOP_SHIFTCOUNT(nr); + *addr |= mask; +} + + static __inline__ int test_and_clear_bit(int nr, void * address) { unsigned long mask;
@@ -66,6 +86,25 @@ return oldbit; } + +/* + * Non-Atomic __test_and_clear_bit + * + */ + +static __inline__ int __test_and_clear_bit(int nr, void * address) +{ + unsigned long mask; + unsigned long *addr = (unsigned long *) address; + int oldbit; + addr += (nr >> SHIFT_PER_LONG); + mask = 1L << CHOP_SHIFTCOUNT(nr); + oldbit = (*addr & mask) ? 1 : 0; + *addr &= ~mask; + return oldbit; +} + + static __inline__ void clear_bit(int nr, void * address) {
Hello,
Is this going into CVS any time soon? It seems to work fine on my 720/50.
Regards,
Albert
Quoted 10 lines · Carlos O'Donell Jr.
parisc,
Walking the source for devfs and thinking about Alberts problem.
Would the non-working devfs be fixed by adding:
Non-atomic versions of
set_bite.g.__set_bitandtest_and_set_bite.g.__test_and_set_bittolinux/include/asm-parisc/bitops.h?
Quoted 8 lines
I have the latest CVS linux module.
I've patched against that. It compiles now ;) (god bless make -j8)I'm currently sleepy, but I'll post the patch, and test it tommorow on a 712/60 and 715/50.
c.
<patch snipped>
Quoted 9 lines
Hello,
Is this going into CVS any time soon? It seems to work fine on my 720/50.
Regards,
Albert
Albert,
Have you booted a devfs kernel on you box?
Does it seem to function properly?
Adding devfs to my kernel causes some odd stuff to go on after trying to enter INIT. Though I haven't had time to sort it out. The kernel boots fine, but probably one of the startup scripts is doing something decidedly wrong.
Since you are using init=/bin/sh, and unless you tell devfs to explicitly mount at boot, you won't _really_ be using devfs :)
Sure, it compiles... and it looks like it should work. But theory and practice are so different it's not funny.
<Carlos looks back at the RF Amplifier design he has on the whiteboard and chuckles>
c.
Quoted 21 lines
Quoted 11 lines
parisc,
Walking the source for devfs and thinking about Alberts problem.
Would the non-working devfs be fixed by adding:
Non-atomic versions of
set_bite.g.__set_bitandtest_and_set_bite.g.__test_and_set_bittolinux/include/asm-parisc/bitops.h?Quoted 8 lines
I have the latest CVS linux module.
I've patched against that. It compiles now ;) (god bless make -j8)I'm currently sleepy, but I'll post the patch, and test it tommorow on a 712/60 and 715/50.
c.
<patch snipped>
Hello,
There's a CONFIG_DEVFS_MOUNT option that mounts it at boot. I know I used fdisk on /dev/scsi/somedamnthing/part3/block10/orifice99 or somesuch :-)
If init is croaking, you need devfsd perhaps?
But here it works fine.
Regards,
Albert
Quoted 55 lines · Carlos O'Donell Jr.
Quoted 9 lines
Hello,
Is this going into CVS any time soon? It seems to work fine on my 720/50.
Regards,
Albert
Albert,
Have you booted a devfs kernel on you box?
Does it seem to function properly?Adding devfs to my kernel causes some odd stuff to go on after trying to enter INIT. Though I haven't had time to sort it out. The kernel boots fine, but probably one of the startup scripts is doing something decidedly wrong.
Since you are using init=/bin/sh, and unless you tell devfs to explicitly mount at boot, you won't _really_ be using devfs :)
Sure, it compiles... and it looks like it should work. But theory and practice are so different it's not funny.
<Carlos looks back at the RF Amplifier design he has on the whiteboard and chuckles>
c.
Quoted 21 lines
Quoted 11 lines
parisc,
Walking the source for devfs and thinking about Alberts problem.
Would the non-working devfs be fixed by adding:
Non-atomic versions of
set_bite.g.__set_bitandtest_and_set_bite.g.__test_and_set_bittolinux/include/asm-parisc/bitops.h?Quoted 8 lines
I have the latest CVS linux module.
I've patched against that. It compiles now ;) (god bless make -j8)I'm currently sleepy, but I'll post the patch, and test it tommorow on a 712/60 and 715/50.
c.
<patch snipped>