On 16/03/2022 08:04, gabriel.moy...@dlr.de wrote:
Hello Sebastian,

On 15/03/2022 16:31, gabriel.moy...@dlr.de wrote:
I'm working on enabling PPS support in RTEMS

does this mean you want to define PPS_SYNC for kern_tc.c and kern_ntptime.c in 
RTEMS?

yes

I guess you want to enable tc_poll_pps in struct timecounter as well?

I didn't plan to do that but it can be done just removing some #ifndef, right?

Is this handler not use for the PPS support? If it is currently unused, then please let it disabled.


For what do you need the sleep() and wakeup() support? Is this only used by the 
RFC 2783 PPS-API implementation?

Yes, they are required by pps_fetch() and pps_event()
If you want to keep implement this in RTEMS, then you can convert this to use a 
condition variable from <sys/lock.h> or
<rtems/thread.h>.

Do you mean to add a condition variable, for example in struct pps_state, and 
to replace sleep() and wakeup() by wait and signal? It is good idea if we don't 
want to use the first functions.

Ok, it seems the pps_event() could be called by interrupt service routines. In this case, you cannot use a mutex and condition variables. You have to use a thread queue directly. Use the thread queue ISR lock for mutual exclusion. Use _Thread_queue_Enqueue() to emulate sleep() and _Thread_queue_Flush_critical() to emulate wakeup(). Check all critical sections that they can be protected by an ISR lock (no blocking calls and short).


All the uses of sleep() and wakeup() need to be clearly identified and if 
possible avoided.

May I ask, what is the reason for avoiding them?

The sleep() and wakeup() synchronization is nice, but not suitable for real-time systems (use of hash tables).


What do you think about coping the functions lmax()/qmin() and the define for 
ENOIOCTL? For lmax()/qmin() I saw that the file where are defined (libkern.h) 
is in libnetworking. Not sure what it is the best option here, I don't like 
when the things are duplicated.

Since you refer to libnetworking I guess you work with RTEMS 5. Please first get it working on RTEMS 6 and then we think about a back port.


What about tvtohz(), which is defined in 
rtemsbsd/rtems/rtems-kernel-timesupport.c?

Maybe just copy the dependencies to kern_tc.c. Later we can try to move them to shared locations if necessary.

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to