2010-12-08 04:27:35

by john stultz

[permalink] [raw]
Subject: Re: [PATCH] Move the scope of the FD_SET, FD_CLR, FD_SETSIZE, FD_ISSET, and FD_SERO to the linux/posix_types.h scope and out of the linux/time.h scope.

On Tue, 2010-12-07 at 18:29 -0800, [email protected] wrote:
> From: Charles Hardin <[email protected]>
>
> This is a change to address a conflict in a time utility library that
> was using the kernel version of timespec and picked up the FD_SET macros
> and which caused a redefinition compiler error
>
> Signed-off-by: Charles Hardin <[email protected]>

No objection here, but I'm not sure if I'm the best to review this, as
I'm not as familiar with the users of FD_*.

thanks
-john


> ---
> include/linux/posix_types.h | 12 ++++++++++++
> include/linux/time.h | 8 --------
> 2 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/include/linux/posix_types.h b/include/linux/posix_types.h
> index f04c98c..c49ce52 100644
> --- a/include/linux/posix_types.h
> +++ b/include/linux/posix_types.h
> @@ -33,6 +33,18 @@
> #undef __FDMASK
> #define __FDMASK(d) (1UL << ((d) % __NFDBITS))
>
> +#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
> +
> +#define NFDBITS __NFDBITS
> +
> +#define FD_SETSIZE __FD_SETSIZE
> +#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
> +#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
> +#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
> +#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
> +
> +#endif /* not kernel and not glibc */
> +
> typedef struct {
> unsigned long fds_bits [__FDSET_LONGS];
> } __kernel_fd_set;
> diff --git a/include/linux/time.h b/include/linux/time.h
> index 9f15ac7..6e612a4 100644
> --- a/include/linux/time.h
> +++ b/include/linux/time.h
> @@ -254,14 +254,6 @@ static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
> }
> #endif /* __KERNEL__ */
>
> -#define NFDBITS __NFDBITS
> -
> -#define FD_SETSIZE __FD_SETSIZE
> -#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
> -#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
> -#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
> -#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
> -
> /*
> * Names of the interval timers, and structure
> * defining a timer setting:


2010-12-08 16:05:11

by Charles Hardin

[permalink] [raw]
Subject: Re: [PATCH] Move the scope of the FD_SET, FD_CLR, FD_SETSIZE, FD_ISSET, and FD_SERO to the linux/posix_types.h scope and out of the linux/time.h scope.

Thanks,

Sorry, your name popped out of the get_maintainers.pl script, you have
any idea who else from

Thomas Gleixner
David Howells
H. Peter Anvin
David S. Miller

This should go to? or just all of them?
Charles

On Tue, Dec 7, 2010 at 8:27 PM, john stultz <[email protected]> wrote:
> On Tue, 2010-12-07 at 18:29 -0800, [email protected] wrote:
>> From: Charles Hardin <[email protected]>
>>
>> This is a change to address a conflict in a time utility library that
>> was using the kernel version of timespec and picked up the FD_SET macros
>> and which caused a redefinition compiler error
>>
>> Signed-off-by: Charles Hardin <[email protected]>
>
> No objection here, but I'm not sure if I'm the best to review this, as
> I'm not as familiar with the users of FD_*.
>
> thanks
> -john
>
>
>> ---
>> ?include/linux/posix_types.h | ? 12 ++++++++++++
>> ?include/linux/time.h ? ? ? ?| ? ?8 --------
>> ?2 files changed, 12 insertions(+), 8 deletions(-)
>>
>> diff --git a/include/linux/posix_types.h b/include/linux/posix_types.h
>> index f04c98c..c49ce52 100644
>> --- a/include/linux/posix_types.h
>> +++ b/include/linux/posix_types.h
>> @@ -33,6 +33,18 @@
>> ?#undef __FDMASK
>> ?#define ? ? ?__FDMASK(d) ? ? (1UL << ((d) % __NFDBITS))
>>
>> +#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
>> +
>> +#define NFDBITS ? ? ? ? ? ? ? ? ? ? ?__NFDBITS
>> +
>> +#define FD_SETSIZE ? ? ? ? ? __FD_SETSIZE
>> +#define FD_SET(fd,fdsetp) ? ?__FD_SET(fd,fdsetp)
>> +#define FD_CLR(fd,fdsetp) ? ?__FD_CLR(fd,fdsetp)
>> +#define FD_ISSET(fd,fdsetp) ?__FD_ISSET(fd,fdsetp)
>> +#define FD_ZERO(fdsetp) ? ? ? ? ? ? ?__FD_ZERO(fdsetp)
>> +
>> +#endif /* not kernel and not glibc */
>> +
>> ?typedef struct {
>> ? ? ? unsigned long fds_bits [__FDSET_LONGS];
>> ?} __kernel_fd_set;
>> diff --git a/include/linux/time.h b/include/linux/time.h
>> index 9f15ac7..6e612a4 100644
>> --- a/include/linux/time.h
>> +++ b/include/linux/time.h
>> @@ -254,14 +254,6 @@ static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
>> ?}
>> ?#endif /* __KERNEL__ */
>>
>> -#define NFDBITS ? ? ? ? ? ? ? ? ? ? ?__NFDBITS
>> -
>> -#define FD_SETSIZE ? ? ? ? ? __FD_SETSIZE
>> -#define FD_SET(fd,fdsetp) ? ?__FD_SET(fd,fdsetp)
>> -#define FD_CLR(fd,fdsetp) ? ?__FD_CLR(fd,fdsetp)
>> -#define FD_ISSET(fd,fdsetp) ?__FD_ISSET(fd,fdsetp)
>> -#define FD_ZERO(fdsetp) ? ? ? ? ? ? ?__FD_ZERO(fdsetp)
>> -
>> ?/*
>> ? * Names of the interval timers, and structure
>> ? * defining a timer setting:
>
>
>