candidate sched.h and sys/sched.h for review

Joel Sherrill joel.sherrill@oarcorp.com
Wed Mar 31 21:07:00 GMT 2010


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?

--joel
> -- Jeff J.
>
>    
>> --joel
>>      
>>> Ralf
>>>        
>>
>>      
>    


-- 
Joel Sherrill, Ph.D.             Director of Research&  Development
joel.sherrill@OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the Newlib mailing list