The patch titled Subject: posix_types: remove fd_set macros has been added to the -mm tree. Its filename is posix_types-remove-fd_set-macros.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: "H. Peter Anvin" <hpa@xxxxxxxxx> Subject: 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. Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Richard Henderson <rth@xxxxxxxxxxx> Cc: Ivan Kokshaysky <ink@xxxxxxxxxxxxxxxxxxxx> Cc: Matt Turner <mattst88@xxxxxxxxx> Cc: Russell King <linux@xxxxxxxxxxxxxxxx> Cc: Haavard Skinnemoen <hskinnemoen@xxxxxxxxx> Cc: Hans-Christian Egtvedt <egtvedt@xxxxxxxxxxxx> Cc: Mikael Starvik <starvik@xxxxxxxx> Cc: Jesper Nilsson <jesper.nilsson@xxxxxxxx> Cc: David Howells <dhowells@xxxxxxxxxx> Cc: Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx> Cc: Tony Luck <tony.luck@xxxxxxxxx> Cc: Fenghua Yu <fenghua.yu@xxxxxxxxx> Cc: Hirokazu Takata <takata@xxxxxxxxxxxxxx> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: David Howells <dhowells@xxxxxxxxxx> Cc: Koichi Yasutake <yasutake.koichi@xxxxxxxxxxxxxxxx> Cc: Kyle McMartin <kyle@xxxxxxxxxxx> Cc: Helge Deller <deller@xxxxxx> Cc: James Bottomley <jejb@xxxxxxxxxxxxxxxx> Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Cc: Paul Mackerras <paulus@xxxxxxxxx> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Cc: Paul Mundt <lethal@xxxxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Chris Zankel <chris@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/asm-generic/posix_types.h | 72 ---------------------------- include/linux/time.h | 23 ++++++++ 2 files changed, 23 insertions(+), 72 deletions(-) diff -puN include/asm-generic/posix_types.h~posix_types-remove-fd_set-macros include/asm-generic/posix_types.h --- a/include/asm-generic/posix_types.h~posix_types-remove-fd_set-macros +++ a/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 -puN include/linux/time.h~posix_types-remove-fd_set-macros include/linux/time.h --- a/include/linux/time.h~posix_types-remove-fd_set-macros +++ a/include/linux/time.h @@ -4,7 +4,9 @@ #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/math64.h> #endif @@ -256,6 +258,27 @@ static __always_inline void timespec_add 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 _ Subject: Subject: posix_types: remove fd_set macros Patches currently in -mm which might be from hpa@xxxxxxxxx are linux-next.patch x86-olpc-xo15-sci-enable-lid-close-wakeup-control-through-sysfs.patch platform-x86-kill-off-moorestown.patch intel_scu_ipc-remove-moorestown-support.patch platform-x86-intel_mid_thermal-add-msic_thermal-alias.patch platform-x86-intel_mid_thermal-convert-to-use-intel-msic-api.patch platform-x86-intel_mid_thermal-turn-off-thermistor-voltage-by-default.patch intel_mid_powerbtn-use-msic-read-write-instead-of-ipc_scu.patch intel_mid_powerbtn-mark-irq-as-irqf_no_suspend.patch x86-olpc-add-debugfs-interface-for-ec-commands.patch x86-mm-fix-the-size-calculation-of-mapping-tables.patch alix2-supplement-driver-to-include-gpio-button-support.patch net5501-platform-driver-for-soekris-engineering-net5501-single-board-computer.patch x86-use-this_cpu_xxx-to-replace-percpu_xxx-funcs.patch x86-change-percpu_read_stable-to-this_cpu_read_stable.patch hugetlbfs-fix-hugetlb_get_unmapped_area.patch hugetlb-drop-prev_vma-in-hugetlb_get_unmapped_area_topdown.patch hugetlb-try-to-search-again-if-it-is-really-needed.patch hugetlb-try-to-search-again-if-it-is-really-needed-fix.patch mm-do-not-reset-cached_hole_size-when-vma-is-unmapped.patch mm-search-from-free_area_cache-for-the-bigger-size.patch percpu-remove-percpu_xxx-functions.patch smp-start-up-non-boot-cpus-asynchronously.patch smp-start-up-non-boot-cpus-asynchronously-fix.patch posix_types-make-__kernel_id32_t-default-to-unsigned-int.patch posix_types-make-it-possible-to-override-__kernel_fsid_t.patch alpha-use-generic-posix_typesh.patch arm-use-generic-posix_typesh.patch avr32-use-generic-posix_typesh.patch cris-use-generic-posix_typesh.patch frv-use-generic-posix_typesh.patch h8300-use-generic-posix_typesh.patch ia64-use-generic-posix_typesh.patch m32r-use-generic-posix_typesh.patch m68k-use-generic-posix_typesh.patch mips-use-generic-posix_typesh.patch mn10300-use-generic-posix_typesh.patch parisc-use-generic-posix_typesh.patch powerpc-use-generic-posix_typesh.patch s390-use-generic-posix_typesh.patch sh-remove-unnecessary-posix_typesh-type-overrides.patch sparc-use-generic-posix_typesh.patch x86-use-generic-posix_typesh.patch xtensa-use-generic-posix_typesh.patch posix_types-remove-fd_set-macros.patch bitops-rename-for_each_set_bit_cont-in-favor-of-analogous-listh-function.patch bitops-remove-for_each_set_bit_cont.patch bitops-introduce-for_each_clear_bit.patch x86-use-for_each_clear_bit_from.patch ipc-provide-generic-compat-versions-of-ipc-syscalls.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html