From: "tip-bot for H. Peter Anvin" <hpa@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org, hpa@zytor.com,
mingo@redhat.com, akpm@linux-foundation.org, tony.luck@intel.com,
tglx@linutronix.de
Subject: [tip:core/types] posix_types: Remove fd_set macros
Date: Mon, 20 Feb 2012 13:13:52 -0800 [thread overview]
Message-ID: <tip-8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f@git.kernel.org> (raw)
In-Reply-To: <1328677745-20121-22-git-send-email-hpa@zytor.com>
Commit-ID: 8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f
Gitweb: http://git.kernel.org/tip/8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f
Author: H. Peter Anvin <hpa@zytor.com>
AuthorDate: Tue, 7 Feb 2012 21:09:05 -0800
Committer: H. Peter Anvin <hpa@zytor.com>
CommitDate: Tue, 14 Feb 2012 12:47:21 -0800
posix_types: Remove fd_set macros
<asm/posix_types.h> includes a set of macros that operate on file
descriptors. Way long ago those were exported to user space, but
nowadays they are #ifdef __KERNEL__.
However, they are nothing but standard (nonatomic) bit operations, and
we already have optimized versions of bit operations in the kernel.
We can't include <linux/bitops.h> in <asm/posix_types.h> but we can
move the definitions to <linux/time.h> and define them there in terms
of standard kernel bitops.
[ v2: folds the following fixes in:
a) Stray space in __FD_SET(), reported by Andrew Morton
b) #include <linux/string.h> needed for memset(), reported by Tony Luck ]
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Link: http://lkml.kernel.org/r/1328677745-20121-22-git-send-email-hpa@zytor.com
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
include/asm-generic/posix_types.h | 72 -------------------------------------
include/linux/time.h | 24 ++++++++++++
2 files changed, 24 insertions(+), 72 deletions(-)
diff --git a/include/asm-generic/posix_types.h b/include/asm-generic/posix_types.h
index ac21760..e294fe6 100644
--- a/include/asm-generic/posix_types.h
+++ b/include/asm-generic/posix_types.h
@@ -92,76 +92,4 @@ typedef char * __kernel_caddr_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;
-#ifdef __KERNEL__
-
-#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 *__p)
-{
- unsigned long __tmp = __fd / __NFDBITS;
- unsigned long __rem = __fd % __NFDBITS;
- return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
-}
-
-/*
- * This will unroll the loop for the normal constant case (8 ints,
- * for a 256-bit fd_set)
- */
-#undef __FD_ZERO
-static inline void __FD_ZERO(__kernel_fd_set *__p)
-{
- unsigned long *__tmp = __p->fds_bits;
- int __i;
-
- if (__builtin_constant_p(__FDSET_LONGS)) {
- switch (__FDSET_LONGS) {
- case 16:
- __tmp[ 0] = 0; __tmp[ 1] = 0;
- __tmp[ 2] = 0; __tmp[ 3] = 0;
- __tmp[ 4] = 0; __tmp[ 5] = 0;
- __tmp[ 6] = 0; __tmp[ 7] = 0;
- __tmp[ 8] = 0; __tmp[ 9] = 0;
- __tmp[10] = 0; __tmp[11] = 0;
- __tmp[12] = 0; __tmp[13] = 0;
- __tmp[14] = 0; __tmp[15] = 0;
- return;
-
- case 8:
- __tmp[ 0] = 0; __tmp[ 1] = 0;
- __tmp[ 2] = 0; __tmp[ 3] = 0;
- __tmp[ 4] = 0; __tmp[ 5] = 0;
- __tmp[ 6] = 0; __tmp[ 7] = 0;
- return;
-
- case 4:
- __tmp[ 0] = 0; __tmp[ 1] = 0;
- __tmp[ 2] = 0; __tmp[ 3] = 0;
- return;
- }
- }
- __i = __FDSET_LONGS;
- while (__i) {
- __i--;
- *__tmp = 0;
- __tmp++;
- }
-}
-
-#endif /* __KERNEL__ */
-
#endif /* __ASM_GENERIC_POSIX_TYPES_H */
diff --git a/include/linux/time.h b/include/linux/time.h
index b306178..93277a0 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -4,8 +4,11 @@
#include <linux/types.h>
#ifdef __KERNEL__
+# include <linux/bitops.h>
# include <linux/cache.h>
+# include <linux/posix_types.h>
# include <linux/seqlock.h>
+# include <linux/string.h>
# include <linux/math64.h>
#endif
@@ -256,6 +259,27 @@ static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
a->tv_nsec = ns;
}
+
+static inline void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+ __set_bit(__fd, __fdsetp->fds_bits);
+}
+
+static inline void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+ __clear_bit(__fd, __fdsetp->fds_bits);
+}
+
+static inline int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__fdsetp)
+{
+ return test_bit(__fd, __fdsetp->fds_bits);
+}
+
+static inline void __FD_ZERO(__kernel_fd_set *__fdsetp)
+{
+ memset(__fdsetp->fds_bits, 0, sizeof __fdsetp->fds_bits);
+}
+
#endif /* __KERNEL__ */
#define NFDBITS __NFDBITS
next prev parent reply other threads:[~2012-02-20 21:14 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-08 5:08 [PATCH 00/21] RFC: Make all arches use <asm-generic/posix_types.h> H. Peter Anvin
2012-02-08 5:08 ` H. Peter Anvin
2012-02-08 5:08 ` [PATCH 01/21] posix_types: Make __kernel_[ug]id32_t default to unsigned int H. Peter Anvin
2012-02-20 20:57 ` [tip:core/types] posix_types: Make __kernel_[ug] id32_t " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 02/21] posix_types: Make it possible to override __kernel_fsid_t H. Peter Anvin
2012-02-20 20:58 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 03/21] alpha: Use generic posix_types.h H. Peter Anvin
2012-02-20 20:59 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 04/21] arm: " H. Peter Anvin
2012-02-09 0:57 ` Russell King - ARM Linux
2012-02-20 21:00 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 05/21] avr32: " H. Peter Anvin
2012-02-20 21:01 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 06/21] cris: " H. Peter Anvin
2012-02-08 13:21 ` Jesper Nilsson
2012-02-20 21:01 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 07/21] frv: " H. Peter Anvin
2012-02-20 21:02 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 08/21] h8300: " H. Peter Anvin
2012-02-20 21:03 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 09/21] ia64: " H. Peter Anvin
2012-02-20 21:04 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 10/21] m32r: " H. Peter Anvin
2012-02-20 21:05 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 11/21] m68k: " H. Peter Anvin
2012-02-19 10:28 ` Geert Uytterhoeven
2012-02-20 21:05 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 12/21] mips: " H. Peter Anvin
2012-02-20 21:06 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 13/21] mn10300: " H. Peter Anvin
2012-02-20 21:07 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 14/21] parisc: " H. Peter Anvin
2012-02-20 21:08 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:08 ` [PATCH 15/21] powerpc: " H. Peter Anvin
2012-02-09 6:14 ` Benjamin Herrenschmidt
2012-02-20 21:09 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 16/21] s390: " H. Peter Anvin
2012-02-08 9:04 ` Martin Schwidefsky
2012-02-08 16:55 ` H. Peter Anvin
2012-02-08 18:01 ` Martin Schwidefsky
2012-02-20 21:09 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 17/21] sh: Remove unnecessary posix_types.h type overrides H. Peter Anvin
2012-02-20 21:10 ` [tip:core/types] sh: Remove unnecessary posix_types. h " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 18/21] sparc: Use generic posix_types.h H. Peter Anvin
2012-02-09 1:27 ` David Miller
2012-02-20 21:11 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 19/21] x86: " H. Peter Anvin
2012-02-20 21:12 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 20/21] xtensa: " H. Peter Anvin
2012-02-20 21:13 ` [tip:core/types] " tip-bot for H. Peter Anvin
2012-02-08 5:09 ` [PATCH 21/21] posix_types: Remove fd_set macros H. Peter Anvin
2012-02-20 21:13 ` tip-bot for H. Peter Anvin [this message]
2012-02-08 12:20 ` David Howells
2012-02-08 16:57 ` H. Peter Anvin
2012-02-08 21:24 ` David Howells
2012-02-08 21:30 ` H. Peter Anvin
2012-02-14 18:59 ` Tony Luck
2012-02-14 19:18 ` David Howells
2012-02-14 19:44 ` H. Peter Anvin
2012-02-14 20:14 ` H. Peter Anvin
2012-02-16 13:42 ` [PATCH 20/21] xtensa: Use generic posix_types.h David Howells
2012-02-16 17:45 ` Marc Gauthier
2012-02-16 13:44 ` [PATCH 13/21] mn10300: " David Howells
2012-02-16 13:44 ` [PATCH 15/21] powerpc: " David Howells
2012-02-16 20:26 ` Benjamin Herrenschmidt
2012-02-16 20:58 ` H. Peter Anvin
2012-02-16 17:49 ` [PATCH 0/3] Eliminating __FD_*() functions from the kernel David Howells
2012-02-16 17:49 ` [PATCH 1/3] Wrap accesses to the fd_sets in struct fdtable David Howells
2012-02-20 21:14 ` [tip:core/types] " tip-bot for David Howells
2012-02-16 17:49 ` [PATCH 2/3] Replace the fd_sets in struct fdtable with an array of unsigned longs David Howells
2012-02-20 21:15 ` [tip:core/types] " tip-bot for David Howells
2012-02-16 17:50 ` [PATCH 3/3] Delete the __FD_*() funcs for operating on fd_set from linux/time.h David Howells
2012-02-20 21:16 ` [tip:core/types] " tip-bot for David Howells
2012-02-20 21:12 ` [PATCH 13/21] mn10300: Use generic posix_types.h David Howells
2012-02-20 21:12 ` [PATCH 07/21] frv: " David Howells
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=tip-8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f@git.kernel.org \
--to=hpa@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).