From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: David Woodhouse <dwmw2@infradead.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, Cedric Le Goater <clg@fr.ibm.com>
Subject: Re: [patch] s390: missing ifdef in bitops.h
Date: Wed, 14 Jun 2006 12:50:04 +0200 [thread overview]
Message-ID: <1150282204.6461.11.camel@localhost> (raw)
In-Reply-To: <200606132243.24584.arnd@arndb.de>
On Tue, 2006-06-13 at 22:43 +0200, Arnd Bergmann wrote:
> Am Tuesday 13 June 2006 22:33 schrieb Arnd Bergmann:
> > Erm, I don't think the kernel even uses those definitions, the only reason
> > to keep them is old user space.
>
> Sorry, misinformation on my side. The kernel uses the FD_foo versions,
> not the __FD_foo ones, so I did not find them at first.
>
> It's only used in fs/open.c though, and I wonder if that could just
> use the bitops versions directly, as these are more likely to be
> optimized well for a given architecture.
Using set_bit and clear_bit is actually overkill since they use compare
and swap to do an atomic update. That is not needed for __FD_foo. How
about the attached patch ?
--
blue skies,
Martin.
Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH
"Reality continues to ruin my life." - Calvin.
--
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
[S390] __FD_foo definitions.
Make the definitions of __FD_SET, __FD_CLR and __FD_ISSET independent
from asm/bitops.h and remove the macro magic that tests for __GLIBC__.
Use simple C inline functions instead of set_bit, clear_bit and test_bit.
Spotted by David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---
include/asm-s390/posix_types.h | 42 ++++++++++++++++++++++++++---------------
1 files changed, 27 insertions(+), 15 deletions(-)
diff -urpN linux-2.6/include/asm-s390/posix_types.h linux-2.6-patched/include/asm-s390/posix_types.h
--- linux-2.6/include/asm-s390/posix_types.h 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6-patched/include/asm-s390/posix_types.h 2006-06-14 12:37:54.000000000 +0200
@@ -76,24 +76,36 @@ typedef struct {
} __kernel_fsid_t;
-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+#ifdef __KERNEL__
-#ifndef _S390_BITOPS_H
-#include <asm/bitops.h>
-#endif
-
-#undef __FD_SET
-#define __FD_SET(fd,fdsetp) set_bit((fd),(fdsetp)->fds_bits)
-
-#undef __FD_CLR
-#define __FD_CLR(fd,fdsetp) clear_bit((fd),(fdsetp)->fds_bits)
-
-#undef __FD_ISSET
-#define __FD_ISSET(fd,fdsetp) test_bit((fd),(fdsetp)->fds_bits)
+#undef __FD_SET
+static inline void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
+{
+ unsigned long _tmp = fd / __NFDBITS;
+ unsigned long _rem = fd % __NFDBITS;
+ fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
+}
+
+#undef __FD_CLR
+static inline void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
+{
+ unsigned long _tmp = fd / __NFDBITS;
+ unsigned long _rem = fd % __NFDBITS;
+ fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
+}
+
+#undef __FD_ISSET
+static inline int __FD_ISSET(unsigned long fd, const __kernel_fd_set *fdsetp)
+{
+ unsigned long _tmp = fd / __NFDBITS;
+ unsigned long _rem = fd % __NFDBITS;
+ return (fdsetp->fds_bits[_tmp] & (1UL<<_rem)) != 0;
+}
#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) (memset ((fdsetp), 0, sizeof(*(fd_set *)(fdsetp))))
+#define __FD_ZERO(fdsetp) \
+ ((void) memset ((__ptr_t) (fdsetp), 0, sizeof (__kernel_fd_set)))
-#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)*/
+#endif /* __KERNEL__ */
#endif
next prev parent reply other threads:[~2006-06-14 10:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-13 12:09 [patch] s390: missing ifdef in bitops.h Heiko Carstens
2006-06-13 15:17 ` David Woodhouse
2006-06-13 20:33 ` Arnd Bergmann
2006-06-13 20:39 ` David Woodhouse
2006-06-14 5:14 ` Heiko Carstens
2006-06-13 20:43 ` Arnd Bergmann
2006-06-14 10:50 ` Martin Schwidefsky [this message]
2006-06-14 13:04 ` David Woodhouse
2006-06-14 13:06 ` Martin Schwidefsky
2006-06-14 8:57 ` Martin Schwidefsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1150282204.6461.11.camel@localhost \
--to=schwidefsky@de.ibm.com \
--cc=akpm@osdl.org \
--cc=arnd@arndb.de \
--cc=clg@fr.ibm.com \
--cc=dwmw2@infradead.org \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.