linux-mips
[Top] [All Lists]

bitops.h ext2_ ops save/restore flags

To: linux-mips@oss.sgi.com
Subject: bitops.h ext2_ ops save/restore flags
From: Florian Lohoff <flo@rfc822.org>
Date: Tue, 19 Jun 2001 16:23:02 +0200
Organization: rfc822 - pure communication
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.3.17i
Hi,
i am just staring at the bitops as it seems they are the culprit for
the non working ext2 currently - While staring and comparing i found
that the mips ext2_set_bit and co do an save_and_cli/restore_flags
which is very obscure. I cant find any similar in other archs - I guess
the above is due to a possible "atomic" requirement which ext2 doesnt
seem to have (upper layer locking ?)

IMHO the patch cleans this:


Index: include/asm-mips/bitops.h
===================================================================
RCS file: /cvs/linux/include/asm-mips/bitops.h,v
retrieving revision 1.16
diff -u -r1.16 bitops.h
--- include/asm-mips/bitops.h   2001/06/14 05:33:12     1.16
+++ include/asm-mips/bitops.h   2001/06/19 14:21:58
@@ -797,28 +797,24 @@
 #ifdef __MIPSEB__
 extern __inline__ int ext2_set_bit(int nr,void * addr)
 {
-       int             mask, retval, flags;
+       int             mask, retval;
        unsigned char   *ADDR = (unsigned char *) addr;
 
        mask = 1 << (nr & 0x07);
-       save_and_cli(flags);
        retval = (mask & *ADDR) != 0;
        *ADDR |= mask;
-       restore_flags(flags);
        return retval;
 }
 
 extern __inline__ int ext2_clear_bit(int nr, void * addr)
 {
-       int             mask, retval, flags;
+       int             mask, retval;
        unsigned char   *ADDR = (unsigned char *) addr;
 
        ADDR += nr >> 3;
        mask = 1 << (nr & 0x07);
-       save_and_cli(flags);
        retval = (mask & *ADDR) != 0;
        *ADDR &= ~mask;
-       restore_flags(flags);
        return retval;
 }


Comments ?
 
Flo
-- 
Florian Lohoff                  flo@rfc822.org             +49-5201-669912
     Why is it called "common sense" when nobody seems to have any?


<Prev in Thread] Current Thread [Next in Thread>