candidate sched.h and sys/sched.h for review
Jeff Johnston
jjohnstn@redhat.com
Thu Apr 1 13:27:00 GMT 2010
On 03/31/2010 05:22 PM, Joel Sherrill wrote:
> One last question to make sure I have it right.
>
> sys/sched.h needs timespec.
>
> What file is best to include?
> Does sched.h or sys/sched.h include that file?
>
Currently, timespec is in sys/types.h. Your sched.h currently includes
sys/types.h to get pid_t. I think you should leave that include as-is
and also include sys/sched.h. Currently, sys/sched.h includes
sys/types.h as well, but after my change, it should end up including
something other than sys/types.h to get timespec (either time.h or
sys/_time.h) so rather than me having to change sched.h afterwards, just
include it now.
-- Jeff J.
> --joel
>
> On 03/31/2010 04:10 PM, Jeff Johnston wrote:
>> On 03/31/2010 04:14 PM, Joel Sherrill wrote:
>>> On 03/31/2010 01:56 PM, Jeff Johnston wrote:
>>>> On 03/31/2010 12:22 PM, Joel Sherrill wrote:
>>>>> On 03/31/2010 10:08 AM, Ralf Corsepius wrote:
>>>>>> On 03/31/2010 04:54 PM, Joel Sherrill wrote:
>>>>>>> Next try. I am starting a build with this now so there
>>>>>>> might be problems.
>>>>>>>
>>>>>>> Corinna.. SCHED_SPORADIC is now 4. My concern is
>>>>>>> with these constants is that they are sometimes used
>>>>>>> in language bindings and we would have to propagate that.
>>>>>>> If you don't mind, once this rework is in, I will address
>>>>>>> getting us in sync on the other values.
>>>>>>>
>>>>>>> How does it look now?
>>>>>> Errm, I don't think so:
>>>>>>
>>>>>> * Shouldn't sched.h include sys/sched.h?
>>>>>> * Why does sys/sched.h exist at all?
>>>>>> Shouldn't it better be merged into sched.h?
>>>>> newlib is rather contorted here but I think it
>>>>> gets the job done.
>>>>>
>>>>> sched.h includes sys/types.h (which defines timespec)
>>>>>
>>>>> sys/types.h includes sys/sched.h.
>>>>>
>>>>> I think sys/sched.h exists to allow ports to override
>>>>> the constants and structure definitions. If this is
>>>>> right, it is not included for inclusion by applications
>>>>> directly.
>>>>>
>>>> It is akin to the bits directory used by glibc for platform specific
>>>> values but not sure it started that way in newlib's infancy.
>>>>
>>>> For example, glibc sched.h has the prototypes for the sched
>>>> functions in
>>>> it and includes bits/sched.h which contains essentially what we
>>>> currently have in sys/sched.h.
>>>>
>>>> If a system isn't happy with the newlib definition, it overrides
>>>> sys/sched.h with its own.
>>>>
>>>>> I am giving history the benefit of the doubt that this
>>>>> is all done for a reason and correctly placed. Someone
>>>>> else will need to confirm that.
>>>>>
>>>>>> * Shouldn't sys/sched.h include<time.h> (for timespec)?
>>>>>>
>>>>> timespec is in sys/types.h which is included by sched.h.
>>>>>
>>>>> Can someone through some light on this?
>>>>>
>>>> According to the ChangeLog you added it on 2000-02-11. :)
>>>>
>>>> Newlib was ANSI C 90 plus extensions so it probably got put there since
>>>> we stuck additional types there for the most part.
>>>>
>>>> That said, if timespec were instead placed in sys/time.h and could be
>>>> accessed via a __need_timespec flag (with #include<machine/types.h> and
>>>> time_t definition if needed), then sys/sched.h would require sys/time.h
>>>> with the __need_timespec flag and no sys/types.h, sys/types.h would
>>>> require sys/sched.h (where needed) to get struct sched_param. That
>>>> could also be put under a __need_sched_param flag.
>>>>
>>>> I believe that would remove the circular dependency that Ralf noticed.
>>>> Have I missed something?
>>> Jeff.. should the movement of timespec be done as part of
>>> this patch or a follow up?
>>>
>> Well, there are issues with the patch as-is.
>>
>> sched.h should include sys/sched.h as it has in the past and is done in
>> the glibc model. The inclusion of sys/types.h-only does not work for
>> me. sys/types.h only includes sys/sched.h when _POSIX_THREADS is
>> defined. AFAIK, struct sched_param definition by sched.h is not tied to
>> _POSIX_THREADS being defined.
>>
>> If everyone is ok with my proposal for getting rid of the circular
>> dependency, I can do it after you modify your patch to essentially be
>> prototypes added to sched.h.
>>
>> -- Jeff J.
>>
>>> --joel
>>>> -- Jeff J.
>>>>
>>>>> --joel
>>>>>> Ralf
>>>
>
>
More information about the Newlib
mailing list