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

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


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.
>    
Ok.  I will do that and make sure it can build RTEMS.
> 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.
>    
If it works, it is fine with me. Just distinct surgery from this.


--joel
> -- Jeff J.
>
>    
>> --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