Hi all!

This is intendet as a first draft attemt only , I tried to simply sum up the 
feedback that was filling my mailbox .  I would like to remember that we 
agreed to try and get the simple-API ready for linuxexpo Paris/NY...




   The API draft according to a thinking nerds naiv view of digital-life
   ---------------------------------------------------------------------


This could be a template to be put on realtimelinux.org as starting
point. If people want to use the term "Real Time Linux" they have to
comply to this open standard being maintained by an open board. 
(Both NMT/FSMlabs and RTAI people should be in the board)

Questions to be solved in advance:
----------------------------------

 1) API complient to what ?
    a) strict POSIX , (keaping a _np extension to 
       indicate were this is not met)
    b) the "x/open extension to POSIX" , (where can one find 
       this ?? could the relevant documents be put on the 
       rtlinxu.org/realtimelinux.org webpage ?? )
 
 2) context : The simple API runs in kernel-space , functions extending
    it to "soft-realtime-in-user-space" go to an extendet-API or a 
    soft-realtime-API ?
 
 3) thread, pthread or task and other naming conventions
    (pthread_make_periodic_np( measure, HRTIME_INFINITY, 0 ); sounds
    a little bit contradictious, make a POSIX thread periodic with
    a non POSIX function ??)
 
 4) since "l" in rtl_ stands for linux, rtl_ is redundant, exept if 
    there was rtwin_ under linux. functions start with rt_ , rtl_ is 
    reserved for RTLinux, rtai_ for RTAI if they add their functions.


-------------------------------------------------------------------------------

     The Simple API .....this is my first public suicide attemt :)
     --------------

IRQ functions:
--------------
  int rt_request_global_irq( unsigned int irq,
    unsigned int (*handler)(unsigned int, struct pt_regs *) );
  void rt_hard_enable_irq( unsigned int irq );
  void rt_hard_disable_irq( unsigned int irq );
  void rt_release_global_irq( unsigned int irq );
  void rt_focus_global_irq( irq, bitmap );  ??? is bitmap a irq-mask ???

RT_TASK functions:
------------------
  rt_task_t * rt_task_create( char * name, rt_task_attr_t *
    attr void * ( *start_routine)(void *), void * arg);
  int rt_task_set_attr( rt_task_t * task, rt_task_attr *  attr );
  int rt_task_delete( task_t task );
  int rt_task_suspend( task_t task );
  int rt_task_wakeup( task_t task );
  int rt_task_wait( void );
  int rt_task_make_periodic( task_t p,
    hrtime_t start_time, hrtime_t period );
  int rt_task_getbyname( "taskname" );

FIFOs:
------
  int rt_fifo_create_handler( unsigned int fifo,
    int (*handler)(unsigned int fifo) );
  int rt_fifo_named_create( "fifoname", size );
  int rt_fifo_create( unsigned int fifo, int size );
  int rt_fifo_destroy( unsigned int fifo );

SHM:
----
  rt_shm_t * rt_shm_create( char * name , unsigned int size , void ** shm);
  void rt_shm_allocate( const char *name,unsigned int size, void **shm );
  int rt_shm_destroy(rt_shm_t * shm);
  int rt_shm_deallocate( void * shm );

PROC:
-----
  void rt_proc_name_task( "taskname", task )

TIME:
-----
  unsigned int rt_get_time( int *cpu_id )

DYNAMIC MEMORY ALLOCATION:
--------------------------
  void rt_kmalloc ???????
  void rt_kfree ??????

SEM:
----
  rt_sem * rt_sem_create( char * name , unsigned int value );
  int rt_sem_give(rt_sem * sem);
  int rt_sem_take(rt_sem * sem, rt_time * time); 


Nicholas Mc Guire <[EMAIL PROTECTED]>
Peter Wurmsdobler <[EMAIL PROTECTED]>
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to