Changeset b06e68ef in rtems for c/src/exec


Ignore:
Timestamp:
08/17/95 19:51:51 (28 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
95fbca1
Parents:
3b438fa
Message:

Numerous miscellaneous features incorporated from Tony Bennett
(tbennett@…) including the following major additions:

+ variable length messages
+ named devices
+ debug monitor
+ association tables/variables

Location:
c/src/exec
Files:
6 added
30 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libcsupport/include/clockdrv.h

    r3b438fa rb06e68ef  
    2424
    2525extern volatile rtems_unsigned32 Clock_driver_ticks;
     26extern rtems_device_major_number rtems_clock_major;
     27extern rtems_device_minor_number rtems_clock_minor;
    2628
    27 /* functions */
    28 
    29 rtems_task Exit_task();
    30 void exit_task_init();
    31 
    32 void Install_clock( rtems_isr_entry );
    33 void ReInstall_clock( rtems_isr_entry );
    34 void Clock_exit();
    35 
    36 rtems_isr Clock_isr(
    37   rtems_vector_number
    38 );
    39 
    40 /* driver entries */
     29/* default clock driver entry */
    4130
    4231#define CLOCK_DRIVER_TABLE_ENTRY \
    43   { Clock_initialize, NULL, NULL, NULL, NULL, NULL }
    44 
     32  { Clock_initialize, NULL, NULL, NULL, NULL, Clock_control }
     33 
    4534rtems_device_driver Clock_initialize(
    4635  rtems_device_major_number,
    4736  rtems_device_minor_number,
    48   void *,
    49   rtems_id,
    50   rtems_unsigned32 *
     37  void *
     38);
     39
     40rtems_device_driver Clock_control(
     41  rtems_device_major_number major,
     42  rtems_device_minor_number minor,
     43  void *pargp
    5144);
    5245
  • c/src/exec/rtems/headers/message.h

    r3b438fa rb06e68ef  
    4242 *  The following defines the data types needed to manipulate
    4343 *  the contents of message buffers.
     44 *  Since msgs are variable length we just make a ptr to 1.
    4445 */
    4546
    4647typedef struct {
    47   unsigned32 field1;
    48   unsigned32 field2;
    49   unsigned32 field3;
    50   unsigned32 field4;
    51 }  Message_queue_Buffer;
     48    unsigned32  size;
     49
     50#ifndef __cplusplus
     51                               /* NOTE:   [0] is gcc specific,
     52                                *   but specifically disallowed by ANSI STD C++
     53                                * g++ warns about it, so we #ifdef it out to
     54                                * get rid of warnings when compiled by g++.
     55                                */
     56    unsigned32  buffer[0];
     57#endif
     58
     59} Message_queue_Buffer;
    5260
    5361/*
     
    6977  Objects_Control      Object;
    7078  Thread_queue_Control Wait_queue;
    71   rtems_attribute   attribute_set;
     79  rtems_attribute      attribute_set;
    7280  unsigned32           maximum_pending_messages;
    7381  unsigned32           number_of_pending_messages;
     82  unsigned32           maximum_message_size;
    7483  Chain_Control        Pending_messages;
     84  Message_queue_Buffer *message_buffers;
     85  Chain_Control        Inactive_messages;
    7586}   Message_queue_Control;
    7687
     
    8192
    8293EXTERN Objects_Information  _Message_queue_Information;
    83 
    84 /*
    85  *  The following defines the data structures used to
    86  *  manage the pool of inactive message buffers.
    87  */
    88 
    89 EXTERN Chain_Control _Message_queue_Inactive_messages;
    9094
    9195/*
     
    109113
    110114void _Message_queue_Manager_initialization(
    111   unsigned32 maximum_message_queues,
    112   unsigned32 maximum_messages
     115  unsigned32 maximum_message_queues
    113116);
    114117
     
    127130
    128131rtems_status_code rtems_message_queue_create(
    129   Objects_Name        name,
    130   unsigned32          count,
     132  Objects_Name     name,
     133  unsigned32       count,
     134  unsigned32       max_message_size,
    131135  rtems_attribute  attribute_set,
    132   Objects_Id         *id
     136  Objects_Id      *id
    133137);
    134138
     
    184188rtems_status_code rtems_message_queue_send(
    185189  Objects_Id            id,
    186   void                 *buffer
     190  void                 *buffer,
     191  unsigned32            size
    187192);
    188193
     
    205210rtems_status_code rtems_message_queue_urgent(
    206211  Objects_Id            id,
    207   void                 *buffer
     212  void                 *buffer,
     213  unsigned32            size
    208214);
    209215
     
    227233  Objects_Id            id,
    228234  void                 *buffer,
     235  unsigned32            size,
    229236  unsigned32           *count
    230237);
     
    247254  Objects_Id            id,
    248255  void                 *buffer,
     256  unsigned32           *size_p,
    249257  unsigned32            option_set,
    250   rtems_interval     timeout
     258  rtems_interval        timeout
    251259);
    252260
     
    277285
    278286STATIC INLINE void _Message_queue_Copy_buffer (
    279   Message_queue_Buffer *source,
    280   Message_queue_Buffer *destination
     287  void      *source,
     288  void      *destination,
     289  unsigned32 size
    281290);
    282291
     
    296305  Message_queue_Control *the_message_queue,
    297306  unsigned32             option_set,
    298   Message_queue_Buffer  *buffer
     307  void                  *buffer,
     308  unsigned32            *size_p
    299309);
    300310
     
    323333rtems_status_code _Message_queue_Submit(
    324334  Objects_Id                  id,
    325   Message_queue_Buffer       *buffer,
     335  void                       *buffer,
     336  unsigned32                  size,
    326337  Message_queue_Submit_types  submit_type
    327338);
     
    337348
    338349STATIC INLINE Message_queue_Buffer_control *
    339   _Message_queue_Allocate_message_buffer ( void );
     350  _Message_queue_Allocate_message_buffer (
     351   Message_queue_Control *the_message_queue
     352);
    340353
    341354/*
     
    349362
    350363STATIC INLINE void _Message_queue_Free_message_buffer (
     364  Message_queue_Control        *the_message_queue,
    351365  Message_queue_Buffer_control *the_message
    352366);
     
    416430 */
    417431
    418 STATIC INLINE Message_queue_Control *_Message_queue_Allocate ( void );
     432Message_queue_Control *_Message_queue_Allocate (
     433    unsigned32          count,
     434    unsigned32          max_message_size
     435);
    419436
    420437/*
     
    423440 *  DESCRIPTION:
    424441 *
    425  *  This routine allocates a message queue control block from
     442 *  This routine deallocates a message queue control block into
    426443 *  the inactive chain of free message queue control blocks.
    427444 */
  • c/src/exec/rtems/headers/msgmp.h

    r3b438fa rb06e68ef  
    5656
    5757typedef struct {
    58   rtems_packet_prefix                   Prefix;
     58  rtems_packet_prefix                Prefix;
    5959  Message_queue_MP_Remote_operations operation;
    6060  Objects_Name                       name;
    61   rtems_option                    option_set;
     61  rtems_option                       option_set;
    6262  Objects_Id                         proxy_id;
    6363  unsigned32                         count;
     64  unsigned32                         size;
    6465  unsigned32                         pad0;
    65   unsigned32                         pad1;
    66   unsigned32                         pad2;
    6766  Message_queue_Buffer               Buffer;
    6867}   Message_queue_MP_Packet;
     
    9695  Message_queue_MP_Remote_operations  operation,
    9796  Objects_Id                          message_queue_id,
    98   Message_queue_Buffer               *buffer,
    99   rtems_option                     option_set,
    100   rtems_interval                   timeout
     97  void                               *buffer,
     98  unsigned32                         *size_p,
     99  rtems_option                        option_set,
     100  rtems_interval                      timeout
    101101);
    102102
  • c/src/exec/rtems/include/rtems/rtems/message.h

    r3b438fa rb06e68ef  
    4242 *  The following defines the data types needed to manipulate
    4343 *  the contents of message buffers.
     44 *  Since msgs are variable length we just make a ptr to 1.
    4445 */
    4546
    4647typedef struct {
    47   unsigned32 field1;
    48   unsigned32 field2;
    49   unsigned32 field3;
    50   unsigned32 field4;
    51 }  Message_queue_Buffer;
     48    unsigned32  size;
     49
     50#ifndef __cplusplus
     51                               /* NOTE:   [0] is gcc specific,
     52                                *   but specifically disallowed by ANSI STD C++
     53                                * g++ warns about it, so we #ifdef it out to
     54                                * get rid of warnings when compiled by g++.
     55                                */
     56    unsigned32  buffer[0];
     57#endif
     58
     59} Message_queue_Buffer;
    5260
    5361/*
     
    6977  Objects_Control      Object;
    7078  Thread_queue_Control Wait_queue;
    71   rtems_attribute   attribute_set;
     79  rtems_attribute      attribute_set;
    7280  unsigned32           maximum_pending_messages;
    7381  unsigned32           number_of_pending_messages;
     82  unsigned32           maximum_message_size;
    7483  Chain_Control        Pending_messages;
     84  Message_queue_Buffer *message_buffers;
     85  Chain_Control        Inactive_messages;
    7586}   Message_queue_Control;
    7687
     
    8192
    8293EXTERN Objects_Information  _Message_queue_Information;
    83 
    84 /*
    85  *  The following defines the data structures used to
    86  *  manage the pool of inactive message buffers.
    87  */
    88 
    89 EXTERN Chain_Control _Message_queue_Inactive_messages;
    9094
    9195/*
     
    109113
    110114void _Message_queue_Manager_initialization(
    111   unsigned32 maximum_message_queues,
    112   unsigned32 maximum_messages
     115  unsigned32 maximum_message_queues
    113116);
    114117
     
    127130
    128131rtems_status_code rtems_message_queue_create(
    129   Objects_Name        name,
    130   unsigned32          count,
     132  Objects_Name     name,
     133  unsigned32       count,
     134  unsigned32       max_message_size,
    131135  rtems_attribute  attribute_set,
    132   Objects_Id         *id
     136  Objects_Id      *id
    133137);
    134138
     
    184188rtems_status_code rtems_message_queue_send(
    185189  Objects_Id            id,
    186   void                 *buffer
     190  void                 *buffer,
     191  unsigned32            size
    187192);
    188193
     
    205210rtems_status_code rtems_message_queue_urgent(
    206211  Objects_Id            id,
    207   void                 *buffer
     212  void                 *buffer,
     213  unsigned32            size
    208214);
    209215
     
    227233  Objects_Id            id,
    228234  void                 *buffer,
     235  unsigned32            size,
    229236  unsigned32           *count
    230237);
     
    247254  Objects_Id            id,
    248255  void                 *buffer,
     256  unsigned32           *size_p,
    249257  unsigned32            option_set,
    250   rtems_interval     timeout
     258  rtems_interval        timeout
    251259);
    252260
     
    277285
    278286STATIC INLINE void _Message_queue_Copy_buffer (
    279   Message_queue_Buffer *source,
    280   Message_queue_Buffer *destination
     287  void      *source,
     288  void      *destination,
     289  unsigned32 size
    281290);
    282291
     
    296305  Message_queue_Control *the_message_queue,
    297306  unsigned32             option_set,
    298   Message_queue_Buffer  *buffer
     307  void                  *buffer,
     308  unsigned32            *size_p
    299309);
    300310
     
    323333rtems_status_code _Message_queue_Submit(
    324334  Objects_Id                  id,
    325   Message_queue_Buffer       *buffer,
     335  void                       *buffer,
     336  unsigned32                  size,
    326337  Message_queue_Submit_types  submit_type
    327338);
     
    337348
    338349STATIC INLINE Message_queue_Buffer_control *
    339   _Message_queue_Allocate_message_buffer ( void );
     350  _Message_queue_Allocate_message_buffer (
     351   Message_queue_Control *the_message_queue
     352);
    340353
    341354/*
     
    349362
    350363STATIC INLINE void _Message_queue_Free_message_buffer (
     364  Message_queue_Control        *the_message_queue,
    351365  Message_queue_Buffer_control *the_message
    352366);
     
    416430 */
    417431
    418 STATIC INLINE Message_queue_Control *_Message_queue_Allocate ( void );
     432Message_queue_Control *_Message_queue_Allocate (
     433    unsigned32          count,
     434    unsigned32          max_message_size
     435);
    419436
    420437/*
     
    423440 *  DESCRIPTION:
    424441 *
    425  *  This routine allocates a message queue control block from
     442 *  This routine deallocates a message queue control block into
    426443 *  the inactive chain of free message queue control blocks.
    427444 */
  • c/src/exec/rtems/include/rtems/rtems/msgmp.h

    r3b438fa rb06e68ef  
    5656
    5757typedef struct {
    58   rtems_packet_prefix                   Prefix;
     58  rtems_packet_prefix                Prefix;
    5959  Message_queue_MP_Remote_operations operation;
    6060  Objects_Name                       name;
    61   rtems_option                    option_set;
     61  rtems_option                       option_set;
    6262  Objects_Id                         proxy_id;
    6363  unsigned32                         count;
     64  unsigned32                         size;
    6465  unsigned32                         pad0;
    65   unsigned32                         pad1;
    66   unsigned32                         pad2;
    6766  Message_queue_Buffer               Buffer;
    6867}   Message_queue_MP_Packet;
     
    9695  Message_queue_MP_Remote_operations  operation,
    9796  Objects_Id                          message_queue_id,
    98   Message_queue_Buffer               *buffer,
    99   rtems_option                     option_set,
    100   rtems_interval                   timeout
     97  void                               *buffer,
     98  unsigned32                         *size_p,
     99  rtems_option                        option_set,
     100  rtems_interval                      timeout
    101101);
    102102
  • c/src/exec/rtems/inline/attr.inl

    r3b438fa rb06e68ef  
    8585/*PAGE
    8686 *
    87  *  _Attributes_Is_limit
    88  *
    89  */
    90 
    91 STATIC INLINE boolean _Attributes_Is_limit(
    92   rtems_attribute attribute_set
    93 )
    94 {
    95    return ( attribute_set & RTEMS_LIMIT );
    96 }
    97 
    98 /*PAGE
    99  *
    10087 *  _Attributes_Is_binary_semaphore
    10188 *
  • c/src/exec/rtems/inline/message.inl

    r3b438fa rb06e68ef  
    1818#define __MESSAGE_QUEUE_inl
    1919
     20#include <rtems/wkspace.h>
     21
    2022/*PAGE
    2123 *
     
    2527
    2628STATIC INLINE void _Message_queue_Copy_buffer (
    27   Message_queue_Buffer *source,
    28   Message_queue_Buffer *destination
     29  void      *source,
     30  void      *destination,
     31  unsigned32 size
    2932)
    3033{
    31   *destination = *source;
     34  memcpy(destination, source, size);
    3235}
    3336
     
    3942
    4043STATIC INLINE Message_queue_Buffer_control *
    41   _Message_queue_Allocate_message_buffer ( void )
     44_Message_queue_Allocate_message_buffer (
     45    Message_queue_Control *the_message_queue
     46)
    4247{
    4348   return (Message_queue_Buffer_control *)
    44      _Chain_Get( &_Message_queue_Inactive_messages );
     49     _Chain_Get( &the_message_queue->Inactive_messages );
    4550}
    4651
     
    5257
    5358STATIC INLINE void _Message_queue_Free_message_buffer (
    54   Message_queue_Buffer_control *the_message
     59    Message_queue_Control        *the_message_queue,
     60    Message_queue_Buffer_control *the_message
    5561)
    5662{
    57  _Chain_Append( &_Message_queue_Inactive_messages, &the_message->Node );
     63  _Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
    5864}
    5965
     
    117123}
    118124
    119 /*PAGE
    120  *
    121  *  _Message_queue_Allocate
    122  *
    123  */
    124 
    125 STATIC INLINE Message_queue_Control *_Message_queue_Allocate ( void )
    126 {
    127   return (Message_queue_Control *)
    128      _Objects_Allocate( &_Message_queue_Information );
    129 }
    130125
    131126/*PAGE
     
    139134)
    140135{
     136  if (the_message_queue->message_buffers)
     137  {
     138      _Workspace_Free((void *) the_message_queue->message_buffers);
     139      the_message_queue->message_buffers = 0;
     140  }
     141 
    141142  _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
    142143}
  • c/src/exec/rtems/inline/rtems/rtems/attr.inl

    r3b438fa rb06e68ef  
    8585/*PAGE
    8686 *
    87  *  _Attributes_Is_limit
    88  *
    89  */
    90 
    91 STATIC INLINE boolean _Attributes_Is_limit(
    92   rtems_attribute attribute_set
    93 )
    94 {
    95    return ( attribute_set & RTEMS_LIMIT );
    96 }
    97 
    98 /*PAGE
    99  *
    10087 *  _Attributes_Is_binary_semaphore
    10188 *
  • c/src/exec/rtems/inline/rtems/rtems/message.inl

    r3b438fa rb06e68ef  
    1818#define __MESSAGE_QUEUE_inl
    1919
     20#include <rtems/wkspace.h>
     21
    2022/*PAGE
    2123 *
     
    2527
    2628STATIC INLINE void _Message_queue_Copy_buffer (
    27   Message_queue_Buffer *source,
    28   Message_queue_Buffer *destination
     29  void      *source,
     30  void      *destination,
     31  unsigned32 size
    2932)
    3033{
    31   *destination = *source;
     34  memcpy(destination, source, size);
    3235}
    3336
     
    3942
    4043STATIC INLINE Message_queue_Buffer_control *
    41   _Message_queue_Allocate_message_buffer ( void )
     44_Message_queue_Allocate_message_buffer (
     45    Message_queue_Control *the_message_queue
     46)
    4247{
    4348   return (Message_queue_Buffer_control *)
    44      _Chain_Get( &_Message_queue_Inactive_messages );
     49     _Chain_Get( &the_message_queue->Inactive_messages );
    4550}
    4651
     
    5257
    5358STATIC INLINE void _Message_queue_Free_message_buffer (
    54   Message_queue_Buffer_control *the_message
     59    Message_queue_Control        *the_message_queue,
     60    Message_queue_Buffer_control *the_message
    5561)
    5662{
    57  _Chain_Append( &_Message_queue_Inactive_messages, &the_message->Node );
     63  _Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
    5864}
    5965
     
    117123}
    118124
    119 /*PAGE
    120  *
    121  *  _Message_queue_Allocate
    122  *
    123  */
    124 
    125 STATIC INLINE Message_queue_Control *_Message_queue_Allocate ( void )
    126 {
    127   return (Message_queue_Control *)
    128      _Objects_Allocate( &_Message_queue_Information );
    129 }
    130125
    131126/*PAGE
     
    139134)
    140135{
     136  if (the_message_queue->message_buffers)
     137  {
     138      _Workspace_Free((void *) the_message_queue->message_buffers);
     139      the_message_queue->message_buffers = 0;
     140  }
     141 
    141142  _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
    142143}
  • c/src/exec/rtems/macros/attr.inl

    r3b438fa rb06e68ef  
    6363/*PAGE
    6464 *
    65  *  _Attributes_Is_limit
    66  *
    67  */
    68 
    69 #define _Attributes_Is_limit( _attribute_set ) \
    70   ( (_attribute_set) & RTEMS_LIMIT )
    71 
    72 /*PAGE
    73  *
    7465 *  _Attributes_Is_binary_semaphore
    7566 *
  • c/src/exec/rtems/macros/rtems/rtems/attr.inl

    r3b438fa rb06e68ef  
    6363/*PAGE
    6464 *
    65  *  _Attributes_Is_limit
    66  *
    67  */
    68 
    69 #define _Attributes_Is_limit( _attribute_set ) \
    70   ( (_attribute_set) & RTEMS_LIMIT )
    71 
    72 /*PAGE
    73  *
    7465 *  _Attributes_Is_binary_semaphore
    7566 *
  • c/src/exec/rtems/optman/no-msg.c

    r3b438fa rb06e68ef  
    2727
    2828void _Message_queue_Manager_initialization(
    29   unsigned32 maximum_message_queues,
    30   unsigned32 maximum_messages
     29  unsigned32 maximum_message_queues
    3130)
    3231{
     
    3635  Objects_Name        name,
    3736  unsigned32          count,
    38   rtems_attribute  attribute_set,
     37  unsigned32          max_message_size,
     38  rtems_attribute     attribute_set,
    3939  Objects_Id         *id
    4040)
     
    6161rtems_status_code rtems_message_queue_send(
    6262  Objects_Id            id,
    63   void                 *buffer
     63  void                 *buffer,
     64  unsigned32            size
    6465)
    6566{
     
    6970rtems_status_code rtems_message_queue_urgent(
    7071  Objects_Id            id,
    71   void                 *buffer
     72  void                 *buffer,
     73  unsigned32            size
    7274)
    7375{
     
    7880  Objects_Id            id,
    7981  void                 *buffer,
     82  unsigned32            size,
    8083  unsigned32           *count
    8184)
     
    8790  Objects_Id            id,
    8891  void                 *buffer,
     92  unsigned32           *size_p,
    8993  unsigned32            option_set,
    90   rtems_interval     timeout
     94  rtems_interval        timeout
    9195)
    9296{
     
    111115boolean _Message_queue_Seize(
    112116  Message_queue_Control  *the_message_queue,
    113   rtems_option         option_set,
    114   Message_queue_Buffer   *buffer
     117  rtems_option            option_set,
     118  void                   *buffer,
     119  unsigned32             *size_p
    115120)
    116121{
     
    121126rtems_status_code _Message_queue_Submit(
    122127  Objects_Id                  id,
    123   Message_queue_Buffer       *buffer,
     128  void                       *buffer,
     129  unsigned32                  size,
    124130  Message_queue_Submit_types  submit_type
    125131)
  • c/src/exec/sapi/headers/config.h

    r3b438fa rb06e68ef  
    3333
    3434typedef struct {
    35   Objects_Name       name;              /* task name */
    36   unsigned32         stack_size;        /* task stack size */
     35  Objects_Name          name;              /* task name */
     36  unsigned32            stack_size;        /* task stack size */
    3737  rtems_task_priority   initial_priority;  /* task priority */
    38   rtems_attribute attribute_set;     /* task attributes */
    39   rtems_task_entry       entry_point;       /* task entry point */
    40   rtems_mode      mode_set;          /* task initial mode */
    41   unsigned32         argument;          /* task argument */
    42 }   rtems_initialization_tasks_table;
     38  rtems_attribute       attribute_set;     /* task attributes */
     39  rtems_task_entry      entry_point;       /* task entry point */
     40  rtems_mode            mode_set;          /* task initial mode */
     41  unsigned32            argument;          /* task argument */
     42} rtems_initialization_tasks_table;
    4343
    4444/*
     
    5757typedef unsigned32 rtems_device_minor_number;
    5858
    59 typedef void rtems_device_driver;
     59typedef rtems_status_code rtems_device_driver;
    6060
    6161typedef rtems_device_driver ( *rtems_device_driver_entry )(
    6262                 rtems_device_major_number,
    6363                 rtems_device_minor_number,
    64                  void *,
    65                  Objects_Id,
    66                  unsigned32 *
     64                 void *
    6765             );
    6866
     
    174172typedef struct {
    175173  unsigned32                      default_timeout;        /* in ticks */
     174  unsigned32                      maximum_packet_size;
    176175  rtems_mpci_initialization_entry initialization;
    177176  rtems_mpci_get_packet_entry     get_packet;
     
    179178  rtems_mpci_send_entry           send_packet;
    180179  rtems_mpci_receive_entry        receive_packet;
    181 }  rtems_mpci_table;
     180} rtems_mpci_table;
    182181
    183182/*
     
    193192  unsigned32  maximum_global_objects; /* maximum # global objects */
    194193  unsigned32  maximum_proxies;        /* maximum # proxies */
    195   rtems_mpci_table *User_mpci_table;
    196                                       /* pointer to MPCI table */
     194  rtems_mpci_table *User_mpci_table;  /* pointer to MPCI table */
    197195};
    198196
     
    210208
    211209struct Configuration_Table {
    212   void                                     *work_space_start;
    213   unsigned32                                work_space_size;
    214   unsigned32                                maximum_tasks;
    215   unsigned32                                maximum_timers;
    216   unsigned32                                maximum_semaphores;
    217   unsigned32                                maximum_message_queues;
    218   unsigned32                                maximum_messages;
    219   unsigned32                                maximum_partitions;
    220   unsigned32                                maximum_regions;
    221   unsigned32                                maximum_ports;
    222   unsigned32                                maximum_periods;
    223   unsigned32                                maximum_extensions;
    224   unsigned32                                microseconds_per_tick;
    225   unsigned32                                ticks_per_timeslice;
    226   unsigned32                                number_of_initialization_tasks;
     210  void                             *work_space_start;
     211  unsigned32                        work_space_size;
     212  unsigned32                        maximum_tasks;
     213  unsigned32                        maximum_timers;
     214  unsigned32                        maximum_semaphores;
     215  unsigned32                        maximum_message_queues;
     216  unsigned32                        maximum_partitions;
     217  unsigned32                        maximum_regions;
     218  unsigned32                        maximum_ports;
     219  unsigned32                        maximum_periods;
     220  unsigned32                        maximum_extensions;
     221  unsigned32                        microseconds_per_tick;
     222  unsigned32                        ticks_per_timeslice;
     223  unsigned32                        number_of_initialization_tasks;
    227224  rtems_initialization_tasks_table *User_initialization_tasks_table;
    228   unsigned32                                number_of_device_drivers;
     225  unsigned32                        number_of_device_drivers;
    229226  rtems_driver_address_table       *Device_driver_table;
    230   rtems_extensions_table            *User_extension_table;
     227  rtems_extensions_table           *User_extension_table;
    231228  rtems_multiprocessing_table      *User_multiprocessing_table;
    232229};
     
    245242 */
    246243
    247 EXTERN rtems_configuration_table                 *_Configuration_Table;
     244EXTERN rtems_configuration_table   *_Configuration_Table;
    248245EXTERN rtems_multiprocessing_table *_Configuration_MP_table;
    249246EXTERN rtems_mpci_table            *_Configuration_MPCI_table;
     
    259256
    260257STATIC INLINE void _Configuration_Handler_initialization(
    261   rtems_configuration_table                 *configuration_table,
     258  rtems_configuration_table   *configuration_table,
    262259  rtems_multiprocessing_table *multiprocessing_table,
    263260  rtems_mpci_table            *users_mpci_table
  • c/src/exec/sapi/headers/directives.h

    r3b438fa rb06e68ef  
    1111 *  to the copyright license under the clause at DFARS 252.227-7013.  This
    1212 *  notice must appear in all copies of this file and its derivatives.
     13 *
     14 *  $Id$
    1315 */
    1416
    1517#ifndef __RTEMS_DIRECTIVES_h
    16 #define RTEMS___DIRECTIVES_h
     18#define __RTEMS_DIRECTIVES_h
    1719
    1820#ifdef __cplusplus
     
    8688#define RTEMS_DUAL_PORTED_MEMORY_INTERNAL_TO_EXTERNAL   64
    8789#define RTEMS_IO_INITIALIZE                             65
    88 #define RTEMS_IO_OPEN                                   66
    89 #define RTEMS_IO_CLOSE                                  67
    90 #define RTEMS_IO_READ                                   68
    91 #define RTEMS_IO_WRITE                                  69
    92 #define RTEMS_IO_CONTROL                                70
    93 #define RTEMS_FATAL_ERROR_OCCURRED                      71
    94 #define RTEMS_RATE_MONOTONIC_CREATE                     72
    95 #define RTEMS_RATE_MONOTONIC_NAME_TO_ID                 73
    96 #define RTEMS_RATE_MONOTONIC_DELETE                     74
    97 #define RTEMS_RATE_MONOTONIC_CANCEL                     75
    98 #define RTEMS_RATE_MONOTONIC_PERIOD                     76
    99 #define RTEMS_MULTIPROCESSING_ANNOUNCE                  77
    100 #define RTEMS_DEBUG_ENABLE                              78
    101 #define RTEMS_DEBUG_DISABLE                             79
     90#define RTEMS_IO_REGISTER_NAME                          66
     91#define RTEMS_IO_LOOKUP_NAME                            67
     92#define RTEMS_IO_OPEN                                   68
     93#define RTEMS_IO_CLOSE                                  69
     94#define RTEMS_IO_READ                                   70
     95#define RTEMS_IO_WRITE                                  71
     96#define RTEMS_IO_CONTROL                                72
     97#define RTEMS_FATAL_ERROR_OCCURRED                      73
     98#define RTEMS_RATE_MONOTONIC_CREATE                     74
     99#define RTEMS_RATE_MONOTONIC_NAME_TO_ID                 75
     100#define RTEMS_RATE_MONOTONIC_DELETE                     76
     101#define RTEMS_RATE_MONOTONIC_CANCEL                     77
     102#define RTEMS_RATE_MONOTONIC_PERIOD                     78
     103#define RTEMS_MULTIPROCESSING_ANNOUNCE                  79
     104#define RTEMS_DEBUG_ENABLE                              80
     105#define RTEMS_DEBUG_DISABLE                             81
     106
     107#define RTEMS_NUMBER_OF_ENTRY_POINTS                    82
    102108
    103109#ifdef __cplusplus
  • c/src/exec/sapi/headers/io.h

    r3b438fa rb06e68ef  
    3636
    3737/*
    38  *  The following type defines the set of IO operations which are
    39  *  recognized by _IO_Handler and can be supported by a RTEMS
    40  *  device driver.
    41  */
    42 
    43 typedef enum {
    44   IO_INITIALIZE_OPERATION = 0,
    45   IO_OPEN_OPERATION       = 1,
    46   IO_CLOSE_OPERATION      = 2,
    47   IO_READ_OPERATION       = 3,
    48   IO_WRITE_OPERATION      = 4,
    49   IO_CONTROL_OPERATION    = 5
    50 }  IO_operations;
    51 
    52 /*
    5338 *  The following declare the data required to manage the Device Driver
    5439 *  Address Table.
    5540 */
    5641
    57 EXTERN unsigned32                          _IO_Number_of_drivers;
     42EXTERN unsigned32                  _IO_Number_of_drivers;
    5843EXTERN rtems_driver_address_table *_IO_Driver_address_table;
     44
     45/*
     46 * Table for the io device names
     47 */
     48
     49typedef struct {
     50    char                     *device_name;
     51    unsigned32                device_name_length;
     52    rtems_device_major_number major;
     53    rtems_device_minor_number minor;
     54} rtems_driver_name_t;
     55
     56/*XXX this really should be allocated some better way... */
     57/*XXX it should probably be a chain and use a 'maximum' drivers field
     58 * in config table */
     59#define RTEMS_MAX_DRIVER_NAMES 20
     60EXTERN rtems_driver_name_t rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES];
     61
    5962
    6063/*
     
    7275
    7376/*
     77 *  rtems_io_register_name
     78 *
     79 *  DESCRIPTION:
     80 *
     81 *  Associate a name with a driver.
     82 *
     83 */
     84
     85rtems_status_code rtems_io_register_name(
     86    char *device_name,
     87    rtems_device_major_number major,
     88    rtems_device_minor_number minor
     89);
     90
     91
     92/*
     93 *  rtems_io_lookup_name
     94 *
     95 *  DESCRIPTION:
     96 *
     97 *  Find what driver "owns" this name
     98 */
     99
     100rtems_status_code rtems_io_lookup_name(
     101    const char *pathname,
     102    rtems_driver_name_t **rnp
     103);
     104
     105
     106/*
    74107 *  rtems_io_initialize
    75108 *
     
    83116  rtems_device_major_number  major,
    84117  rtems_device_minor_number  minor,
    85   void             *argument,
    86   unsigned32       *return_value
     118  void             *argument
    87119);
    88120
     
    99131  rtems_device_major_number  major,
    100132  rtems_device_minor_number  minor,
    101   void             *argument,
    102   unsigned32       *return_value
     133  void             *argument
    103134);
    104135
     
    115146  rtems_device_major_number  major,
    116147  rtems_device_minor_number  minor,
    117   void             *argument,
    118   unsigned32       *return_value
     148  void             *argument
    119149);
    120150
     
    131161  rtems_device_major_number  major,
    132162  rtems_device_minor_number  minor,
    133   void             *argument,
    134   unsigned32       *return_value
     163  void             *argument
    135164);
    136165
     
    147176  rtems_device_major_number  major,
    148177  rtems_device_minor_number  minor,
    149   void             *argument,
    150   unsigned32       *return_value
     178  void             *argument
    151179);
    152180
     
    163191  rtems_device_major_number  major,
    164192  rtems_device_minor_number  minor,
    165   void             *argument,
    166   unsigned32       *return_value
     193  void             *argument
    167194);
    168195
     
    177204
    178205void _IO_Initialize_all_drivers( void );
    179 
    180 /*
    181  *  _IO_Handler_routine
    182  *
    183  *  DESCRIPTION:
    184  *
    185  *  This routine provides the common foundation for all of the IO
    186  *  Manager's directives.
    187  */
    188 
    189 rtems_status_code _IO_Handler_routine(
    190   IO_operations              operation,
    191   rtems_device_major_number  major,
    192   rtems_device_minor_number  minor,
    193   void                      *argument,
    194   unsigned32                *return_value
    195 );
    196206
    197207#include <rtems/io.inl>
  • c/src/exec/sapi/headers/sptables.h

    r3b438fa rb06e68ef  
    5050 */
    5151
    52 const void * _Entry_points[ NUMBER_OF_ENTRY_POINTS + 1 ] = {
     52const void * _Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ] = {
    5353  (void *) rtems_initialize_executive,                      /*  0 */
    5454  (void *) rtems_initialize_executive_early,                /*  1 */
     
    117117  (void *) rtems_port_internal_to_external,                 /* 64 */
    118118  (void *) rtems_io_initialize,                             /* 65 */
    119   (void *) rtems_io_open,                                   /* 66 */
    120   (void *) rtems_io_close,                                  /* 67 */
    121   (void *) rtems_io_read,                                   /* 68 */
    122   (void *) rtems_io_write,                                  /* 69 */
    123   (void *) rtems_io_control,                                /* 70 */
    124   (void *) rtems_fatal_error_occurred,                      /* 71 */
    125   (void *) rtems_rate_monotonic_create,                     /* 72 */
    126   (void *) rtems_rate_monotonic_ident,                      /* 73 */
    127   (void *) rtems_rate_monotonic_delete,                     /* 74 */
    128   (void *) rtems_rate_monotonic_cancel,                     /* 75 */
    129   (void *) rtems_rate_monotonic_period,                     /* 76 */
    130   (void *) rtems_multiprocessing_announce,                  /* 77 */
    131   (void *) rtems_debug_enable,                              /* 78 */
    132   (void *) rtems_debug_disable                              /* 79 */
     119  (void *) rtems_io_register_name,                          /* 66 */
     120  (void *) rtems_io_lookup_name,                            /* 67 */
     121  (void *) rtems_io_open,                                   /* 68 */
     122  (void *) rtems_io_close,                                  /* 69 */
     123  (void *) rtems_io_read,                                   /* 70 */
     124  (void *) rtems_io_write,                                  /* 71 */
     125  (void *) rtems_io_control,                                /* 72 */
     126  (void *) rtems_fatal_error_occurred,                      /* 73 */
     127  (void *) rtems_rate_monotonic_create,                     /* 74 */
     128  (void *) rtems_rate_monotonic_ident,                      /* 75 */
     129  (void *) rtems_rate_monotonic_delete,                     /* 76 */
     130  (void *) rtems_rate_monotonic_cancel,                     /* 77 */
     131  (void *) rtems_rate_monotonic_period,                     /* 78 */
     132  (void *) rtems_multiprocessing_announce,                  /* 79 */
     133  (void *) rtems_debug_enable,                              /* 80 */
     134  (void *) rtems_debug_disable                              /* 81 */
    133135};
    134136
  • c/src/exec/sapi/include/rtems/config.h

    r3b438fa rb06e68ef  
    3333
    3434typedef struct {
    35   Objects_Name       name;              /* task name */
    36   unsigned32         stack_size;        /* task stack size */
     35  Objects_Name          name;              /* task name */
     36  unsigned32            stack_size;        /* task stack size */
    3737  rtems_task_priority   initial_priority;  /* task priority */
    38   rtems_attribute attribute_set;     /* task attributes */
    39   rtems_task_entry       entry_point;       /* task entry point */
    40   rtems_mode      mode_set;          /* task initial mode */
    41   unsigned32         argument;          /* task argument */
    42 }   rtems_initialization_tasks_table;
     38  rtems_attribute       attribute_set;     /* task attributes */
     39  rtems_task_entry      entry_point;       /* task entry point */
     40  rtems_mode            mode_set;          /* task initial mode */
     41  unsigned32            argument;          /* task argument */
     42} rtems_initialization_tasks_table;
    4343
    4444/*
     
    5757typedef unsigned32 rtems_device_minor_number;
    5858
    59 typedef void rtems_device_driver;
     59typedef rtems_status_code rtems_device_driver;
    6060
    6161typedef rtems_device_driver ( *rtems_device_driver_entry )(
    6262                 rtems_device_major_number,
    6363                 rtems_device_minor_number,
    64                  void *,
    65                  Objects_Id,
    66                  unsigned32 *
     64                 void *
    6765             );
    6866
     
    174172typedef struct {
    175173  unsigned32                      default_timeout;        /* in ticks */
     174  unsigned32                      maximum_packet_size;
    176175  rtems_mpci_initialization_entry initialization;
    177176  rtems_mpci_get_packet_entry     get_packet;
     
    179178  rtems_mpci_send_entry           send_packet;
    180179  rtems_mpci_receive_entry        receive_packet;
    181 }  rtems_mpci_table;
     180} rtems_mpci_table;
    182181
    183182/*
     
    193192  unsigned32  maximum_global_objects; /* maximum # global objects */
    194193  unsigned32  maximum_proxies;        /* maximum # proxies */
    195   rtems_mpci_table *User_mpci_table;
    196                                       /* pointer to MPCI table */
     194  rtems_mpci_table *User_mpci_table;  /* pointer to MPCI table */
    197195};
    198196
     
    210208
    211209struct Configuration_Table {
    212   void                                     *work_space_start;
    213   unsigned32                                work_space_size;
    214   unsigned32                                maximum_tasks;
    215   unsigned32                                maximum_timers;
    216   unsigned32                                maximum_semaphores;
    217   unsigned32                                maximum_message_queues;
    218   unsigned32                                maximum_messages;
    219   unsigned32                                maximum_partitions;
    220   unsigned32                                maximum_regions;
    221   unsigned32                                maximum_ports;
    222   unsigned32                                maximum_periods;
    223   unsigned32                                maximum_extensions;
    224   unsigned32                                microseconds_per_tick;
    225   unsigned32                                ticks_per_timeslice;
    226   unsigned32                                number_of_initialization_tasks;
     210  void                             *work_space_start;
     211  unsigned32                        work_space_size;
     212  unsigned32                        maximum_tasks;
     213  unsigned32                        maximum_timers;
     214  unsigned32                        maximum_semaphores;
     215  unsigned32                        maximum_message_queues;
     216  unsigned32                        maximum_partitions;
     217  unsigned32                        maximum_regions;
     218  unsigned32                        maximum_ports;
     219  unsigned32                        maximum_periods;
     220  unsigned32                        maximum_extensions;
     221  unsigned32                        microseconds_per_tick;
     222  unsigned32                        ticks_per_timeslice;
     223  unsigned32                        number_of_initialization_tasks;
    227224  rtems_initialization_tasks_table *User_initialization_tasks_table;
    228   unsigned32                                number_of_device_drivers;
     225  unsigned32                        number_of_device_drivers;
    229226  rtems_driver_address_table       *Device_driver_table;
    230   rtems_extensions_table            *User_extension_table;
     227  rtems_extensions_table           *User_extension_table;
    231228  rtems_multiprocessing_table      *User_multiprocessing_table;
    232229};
     
    245242 */
    246243
    247 EXTERN rtems_configuration_table                 *_Configuration_Table;
     244EXTERN rtems_configuration_table   *_Configuration_Table;
    248245EXTERN rtems_multiprocessing_table *_Configuration_MP_table;
    249246EXTERN rtems_mpci_table            *_Configuration_MPCI_table;
     
    259256
    260257STATIC INLINE void _Configuration_Handler_initialization(
    261   rtems_configuration_table                 *configuration_table,
     258  rtems_configuration_table   *configuration_table,
    262259  rtems_multiprocessing_table *multiprocessing_table,
    263260  rtems_mpci_table            *users_mpci_table
  • c/src/exec/sapi/include/rtems/directives.h

    r3b438fa rb06e68ef  
    1111 *  to the copyright license under the clause at DFARS 252.227-7013.  This
    1212 *  notice must appear in all copies of this file and its derivatives.
     13 *
     14 *  $Id$
    1315 */
    1416
    1517#ifndef __RTEMS_DIRECTIVES_h
    16 #define RTEMS___DIRECTIVES_h
     18#define __RTEMS_DIRECTIVES_h
    1719
    1820#ifdef __cplusplus
     
    8688#define RTEMS_DUAL_PORTED_MEMORY_INTERNAL_TO_EXTERNAL   64
    8789#define RTEMS_IO_INITIALIZE                             65
    88 #define RTEMS_IO_OPEN                                   66
    89 #define RTEMS_IO_CLOSE                                  67
    90 #define RTEMS_IO_READ                                   68
    91 #define RTEMS_IO_WRITE                                  69
    92 #define RTEMS_IO_CONTROL                                70
    93 #define RTEMS_FATAL_ERROR_OCCURRED                      71
    94 #define RTEMS_RATE_MONOTONIC_CREATE                     72
    95 #define RTEMS_RATE_MONOTONIC_NAME_TO_ID                 73
    96 #define RTEMS_RATE_MONOTONIC_DELETE                     74
    97 #define RTEMS_RATE_MONOTONIC_CANCEL                     75
    98 #define RTEMS_RATE_MONOTONIC_PERIOD                     76
    99 #define RTEMS_MULTIPROCESSING_ANNOUNCE                  77
    100 #define RTEMS_DEBUG_ENABLE                              78
    101 #define RTEMS_DEBUG_DISABLE                             79
     90#define RTEMS_IO_REGISTER_NAME                          66
     91#define RTEMS_IO_LOOKUP_NAME                            67
     92#define RTEMS_IO_OPEN                                   68
     93#define RTEMS_IO_CLOSE                                  69
     94#define RTEMS_IO_READ                                   70
     95#define RTEMS_IO_WRITE                                  71
     96#define RTEMS_IO_CONTROL                                72
     97#define RTEMS_FATAL_ERROR_OCCURRED                      73
     98#define RTEMS_RATE_MONOTONIC_CREATE                     74
     99#define RTEMS_RATE_MONOTONIC_NAME_TO_ID                 75
     100#define RTEMS_RATE_MONOTONIC_DELETE                     76
     101#define RTEMS_RATE_MONOTONIC_CANCEL                     77
     102#define RTEMS_RATE_MONOTONIC_PERIOD                     78
     103#define RTEMS_MULTIPROCESSING_ANNOUNCE                  79
     104#define RTEMS_DEBUG_ENABLE                              80
     105#define RTEMS_DEBUG_DISABLE                             81
     106
     107#define RTEMS_NUMBER_OF_ENTRY_POINTS                    82
    102108
    103109#ifdef __cplusplus
  • c/src/exec/sapi/include/rtems/io.h

    r3b438fa rb06e68ef  
    3636
    3737/*
    38  *  The following type defines the set of IO operations which are
    39  *  recognized by _IO_Handler and can be supported by a RTEMS
    40  *  device driver.
    41  */
    42 
    43 typedef enum {
    44   IO_INITIALIZE_OPERATION = 0,
    45   IO_OPEN_OPERATION       = 1,
    46   IO_CLOSE_OPERATION      = 2,
    47   IO_READ_OPERATION       = 3,
    48   IO_WRITE_OPERATION      = 4,
    49   IO_CONTROL_OPERATION    = 5
    50 }  IO_operations;
    51 
    52 /*
    5338 *  The following declare the data required to manage the Device Driver
    5439 *  Address Table.
    5540 */
    5641
    57 EXTERN unsigned32                          _IO_Number_of_drivers;
     42EXTERN unsigned32                  _IO_Number_of_drivers;
    5843EXTERN rtems_driver_address_table *_IO_Driver_address_table;
     44
     45/*
     46 * Table for the io device names
     47 */
     48
     49typedef struct {
     50    char                     *device_name;
     51    unsigned32                device_name_length;
     52    rtems_device_major_number major;
     53    rtems_device_minor_number minor;
     54} rtems_driver_name_t;
     55
     56/*XXX this really should be allocated some better way... */
     57/*XXX it should probably be a chain and use a 'maximum' drivers field
     58 * in config table */
     59#define RTEMS_MAX_DRIVER_NAMES 20
     60EXTERN rtems_driver_name_t rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES];
     61
    5962
    6063/*
     
    7275
    7376/*
     77 *  rtems_io_register_name
     78 *
     79 *  DESCRIPTION:
     80 *
     81 *  Associate a name with a driver.
     82 *
     83 */
     84
     85rtems_status_code rtems_io_register_name(
     86    char *device_name,
     87    rtems_device_major_number major,
     88    rtems_device_minor_number minor
     89);
     90
     91
     92/*
     93 *  rtems_io_lookup_name
     94 *
     95 *  DESCRIPTION:
     96 *
     97 *  Find what driver "owns" this name
     98 */
     99
     100rtems_status_code rtems_io_lookup_name(
     101    const char *pathname,
     102    rtems_driver_name_t **rnp
     103);
     104
     105
     106/*
    74107 *  rtems_io_initialize
    75108 *
     
    83116  rtems_device_major_number  major,
    84117  rtems_device_minor_number  minor,
    85   void             *argument,
    86   unsigned32       *return_value
     118  void             *argument
    87119);
    88120
     
    99131  rtems_device_major_number  major,
    100132  rtems_device_minor_number  minor,
    101   void             *argument,
    102   unsigned32       *return_value
     133  void             *argument
    103134);
    104135
     
    115146  rtems_device_major_number  major,
    116147  rtems_device_minor_number  minor,
    117   void             *argument,
    118   unsigned32       *return_value
     148  void             *argument
    119149);
    120150
     
    131161  rtems_device_major_number  major,
    132162  rtems_device_minor_number  minor,
    133   void             *argument,
    134   unsigned32       *return_value
     163  void             *argument
    135164);
    136165
     
    147176  rtems_device_major_number  major,
    148177  rtems_device_minor_number  minor,
    149   void             *argument,
    150   unsigned32       *return_value
     178  void             *argument
    151179);
    152180
     
    163191  rtems_device_major_number  major,
    164192  rtems_device_minor_number  minor,
    165   void             *argument,
    166   unsigned32       *return_value
     193  void             *argument
    167194);
    168195
     
    177204
    178205void _IO_Initialize_all_drivers( void );
    179 
    180 /*
    181  *  _IO_Handler_routine
    182  *
    183  *  DESCRIPTION:
    184  *
    185  *  This routine provides the common foundation for all of the IO
    186  *  Manager's directives.
    187  */
    188 
    189 rtems_status_code _IO_Handler_routine(
    190   IO_operations              operation,
    191   rtems_device_major_number  major,
    192   rtems_device_minor_number  minor,
    193   void                      *argument,
    194   unsigned32                *return_value
    195 );
    196206
    197207#include <rtems/io.inl>
  • c/src/exec/sapi/include/rtems/sptables.h

    r3b438fa rb06e68ef  
    5050 */
    5151
    52 const void * _Entry_points[ NUMBER_OF_ENTRY_POINTS + 1 ] = {
     52const void * _Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ] = {
    5353  (void *) rtems_initialize_executive,                      /*  0 */
    5454  (void *) rtems_initialize_executive_early,                /*  1 */
     
    117117  (void *) rtems_port_internal_to_external,                 /* 64 */
    118118  (void *) rtems_io_initialize,                             /* 65 */
    119   (void *) rtems_io_open,                                   /* 66 */
    120   (void *) rtems_io_close,                                  /* 67 */
    121   (void *) rtems_io_read,                                   /* 68 */
    122   (void *) rtems_io_write,                                  /* 69 */
    123   (void *) rtems_io_control,                                /* 70 */
    124   (void *) rtems_fatal_error_occurred,                      /* 71 */
    125   (void *) rtems_rate_monotonic_create,                     /* 72 */
    126   (void *) rtems_rate_monotonic_ident,                      /* 73 */
    127   (void *) rtems_rate_monotonic_delete,                     /* 74 */
    128   (void *) rtems_rate_monotonic_cancel,                     /* 75 */
    129   (void *) rtems_rate_monotonic_period,                     /* 76 */
    130   (void *) rtems_multiprocessing_announce,                  /* 77 */
    131   (void *) rtems_debug_enable,                              /* 78 */
    132   (void *) rtems_debug_disable                              /* 79 */
     119  (void *) rtems_io_register_name,                          /* 66 */
     120  (void *) rtems_io_lookup_name,                            /* 67 */
     121  (void *) rtems_io_open,                                   /* 68 */
     122  (void *) rtems_io_close,                                  /* 69 */
     123  (void *) rtems_io_read,                                   /* 70 */
     124  (void *) rtems_io_write,                                  /* 71 */
     125  (void *) rtems_io_control,                                /* 72 */
     126  (void *) rtems_fatal_error_occurred,                      /* 73 */
     127  (void *) rtems_rate_monotonic_create,                     /* 74 */
     128  (void *) rtems_rate_monotonic_ident,                      /* 75 */
     129  (void *) rtems_rate_monotonic_delete,                     /* 76 */
     130  (void *) rtems_rate_monotonic_cancel,                     /* 77 */
     131  (void *) rtems_rate_monotonic_period,                     /* 78 */
     132  (void *) rtems_multiprocessing_announce,                  /* 79 */
     133  (void *) rtems_debug_enable,                              /* 80 */
     134  (void *) rtems_debug_disable                              /* 81 */
    133135};
    134136
  • c/src/exec/sapi/optman/no-io.c

    r3b438fa rb06e68ef  
    2424}
    2525
     26rtems_status_code rtems_io_register_name(
     27    char *device_name,
     28    rtems_device_major_number major,
     29    rtems_device_minor_number minor
     30  )
     31{
     32  return RTEMS_NOT_CONFIGURED;
     33}
     34
     35rtems_status_code rtems_io_lookup_name(
     36    const char *pathname,
     37    rtems_driver_name_t **rnp
     38  )
     39{
     40  return RTEMS_NOT_CONFIGURED;
     41}
     42
    2643rtems_status_code rtems_io_initialize(
    2744  rtems_device_major_number  major,
    2845  rtems_device_minor_number  minor,
    29   void             *argument,
    30   unsigned32       *return_value
     46  void             *argument
    3147)
    3248{
     
    3753  rtems_device_major_number  major,
    3854  rtems_device_minor_number  minor,
    39   void             *argument,
    40   unsigned32       *return_value
     55  void             *argument
    4156)
    4257{
     
    4762  rtems_device_major_number  major,
    4863  rtems_device_minor_number  minor,
    49   void             *argument,
    50   unsigned32       *return_value
     64  void             *argument
    5165)
    5266{
     
    5771  rtems_device_major_number  major,
    5872  rtems_device_minor_number  minor,
    59   void             *argument,
    60   unsigned32       *return_value
     73  void             *argument
    6174)
    6275{
     
    6780  rtems_device_major_number  major,
    6881  rtems_device_minor_number  minor,
    69   void             *argument,
    70   unsigned32       *return_value
     82  void             *argument
    7183)
    7284{
     
    7789  rtems_device_major_number  major,
    7890  rtems_device_minor_number  minor,
    79   void             *argument,
    80   unsigned32       *return_value
     91  void             *argument
    8192)
    8293{
    8394  return( RTEMS_NOT_CONFIGURED );
    8495}
    85 
    86 rtems_status_code _IO_Handler_routine(
    87   IO_operations     operation,
    88   rtems_device_major_number  major,
    89   rtems_device_minor_number  minor,
    90   void             *argument,
    91   unsigned32       *return_value
    92 )
    93 {
    94   return( RTEMS_NOT_CONFIGURED );
    95 }
  • c/src/exec/sapi/src/exinit.c

    r3b438fa rb06e68ef  
    178178
    179179  _Message_queue_Manager_initialization(
    180     configuration_table->maximum_message_queues,
    181     configuration_table->maximum_messages
     180    configuration_table->maximum_message_queues
    182181  );
    183182
  • c/src/exec/sapi/src/io.c

    r3b438fa rb06e68ef  
    1919#include <rtems/isr.h>
    2020#include <rtems/thread.h>
     21#include <rtems/intr.h>
     22
     23#include <string.h>
    2124
    2225/*PAGE
     
    3437{
    3538   rtems_device_major_number major;
    36    unsigned32                ignored;
    3739
    3840   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
    39      (void) rtems_io_initialize( major, 0, _Configuration_Table, &ignored );
    40 }
     41     (void) rtems_io_initialize( major, 0, _Configuration_Table);
     42}
     43
     44/*PAGE
     45 *
     46 *  rtems_io_register_name
     47 *
     48 *  Associate a name with a driver
     49 *
     50 *  Input Paramters:
     51 *
     52 *  Output Parameters:
     53 */
     54
     55rtems_status_code rtems_io_register_name(
     56    char *device_name,
     57    rtems_device_major_number major,
     58    rtems_device_minor_number minor
     59  )
     60{
     61    rtems_driver_name_t *np;
     62    unsigned32 level;
     63
     64    /* find an empty slot */
     65    for (np = rtems_driver_name_table; np < &rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES]; np++)
     66    {
     67        rtems_interrupt_disable(level);
     68        if (np->device_name == 0)
     69        {
     70            np->device_name = device_name;
     71            np->device_name_length = strlen(device_name);
     72            np->major = major;
     73            np->minor = minor;
     74            rtems_interrupt_enable(level);
     75
     76            return RTEMS_SUCCESSFUL;
     77        }
     78        rtems_interrupt_enable(level);
     79    }
     80
     81    return RTEMS_TOO_MANY;
     82}
     83
     84/*PAGE
     85 *
     86 *  rtems_io_lookup_name
     87 *
     88 *  Find what driver "owns" this name
     89 *
     90 *  Input Paramters:
     91 *
     92 *  Output Parameters:
     93 */
     94
     95rtems_status_code rtems_io_lookup_name(
     96    const char *pathname,
     97    rtems_driver_name_t **rnp
     98  )
     99{
     100    rtems_driver_name_t *np;
     101
     102    for (np = rtems_driver_name_table; np < &rtems_driver_name_table[RTEMS_MAX_DRIVER_NAMES]; np++)
     103        if (np->device_name)
     104            if (strncmp(np->device_name, pathname, np->device_name_length) == 0)
     105            {               
     106                *rnp = np;
     107                return RTEMS_SUCCESSFUL;
     108            }
     109   
     110    *rnp = 0;
     111    return RTEMS_UNSATISFIED;
     112}
     113
    41114
    42115/*PAGE
     
    50123 *    minor        - device number
    51124 *    argument     - pointer to argument(s)
    52  *    return_value - pointer to driver's return value
    53  *
    54  *  Output Parameters:
    55  *    returns       - return code
    56  *    *return_value - driver's return code
     125 *
     126 *  Output Parameters:
     127 *    returns       - return code
    57128 */
    58129
     
    60131  rtems_device_major_number  major,
    61132  rtems_device_minor_number  minor,
    62   void             *argument,
    63   unsigned32       *return_value
    64 )
    65 {
    66   return _IO_Handler_routine(
    67             IO_INITIALIZE_OPERATION,
    68             major,
    69             minor,
    70             argument,
    71             return_value
    72          );
     133  void             *argument
     134)
     135{
     136    rtems_device_driver_entry callout;
     137   
     138    if ( major >= _IO_Number_of_drivers )
     139        return RTEMS_INVALID_NUMBER;
     140
     141    callout = _IO_Driver_address_table[major].initialization;
     142    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
    73143}
    74144
     
    83153 *    minor        - device number
    84154 *    argument     - pointer to argument(s)
    85  *    return_value - pointer to driver's return value
    86  *
    87  *  Output Parameters:
    88  *    returns       - return code
    89  *    *return_value - driver's return code
     155 *
     156 *  Output Parameters:
     157 *    returns       - return code
    90158 */
    91159
     
    93161  rtems_device_major_number  major,
    94162  rtems_device_minor_number  minor,
    95   void             *argument,
    96   unsigned32       *return_value
    97 )
    98 {
    99   return _IO_Handler_routine(
    100             IO_OPEN_OPERATION,
    101             major,
    102             minor,
    103             argument,
    104             return_value
    105          );
     163  void             *argument
     164)
     165{
     166    rtems_device_driver_entry callout;
     167   
     168    if ( major >= _IO_Number_of_drivers )
     169        return RTEMS_INVALID_NUMBER;
     170
     171    callout = _IO_Driver_address_table[major].open;
     172    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
    106173}
    107174
     
    116183 *    minor        - device number
    117184 *    argument     - pointer to argument(s)
    118  *    return_value - pointer to driver's return value
    119  *
    120  *  Output Parameters:
    121  *    returns       - return code
    122  *    *return_value - driver's return code
     185 *
     186 *  Output Parameters:
     187 *    returns       - return code
    123188 */
    124189
     
    126191  rtems_device_major_number  major,
    127192  rtems_device_minor_number  minor,
    128   void             *argument,
    129   unsigned32       *return_value
    130 )
    131 {
    132   return _IO_Handler_routine(
    133             IO_CLOSE_OPERATION,
    134             major,
    135             minor,
    136             argument,
    137             return_value
    138          );
     193  void             *argument
     194)
     195{
     196    rtems_device_driver_entry callout;
     197   
     198    if ( major >= _IO_Number_of_drivers )
     199        return RTEMS_INVALID_NUMBER;
     200
     201    callout = _IO_Driver_address_table[major].close;
     202    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
    139203}
    140204
     
    149213 *    minor        - device number
    150214 *    argument     - pointer to argument(s)
    151  *    return_value - pointer to driver's return value
    152  *
    153  *  Output Parameters:
    154  *    returns       - return code
    155  *    *return_value - driver's return code
     215 *
     216 *  Output Parameters:
     217 *    returns       - return code
    156218 */
    157219
     
    159221  rtems_device_major_number  major,
    160222  rtems_device_minor_number  minor,
    161   void             *argument,
    162   unsigned32       *return_value
    163 )
    164 {
    165   return _IO_Handler_routine(
    166             IO_READ_OPERATION,
    167             major,
    168             minor,
    169             argument,
    170             return_value
    171          );
     223  void             *argument
     224)
     225{
     226    rtems_device_driver_entry callout;
     227   
     228    if ( major >= _IO_Number_of_drivers )
     229        return RTEMS_INVALID_NUMBER;
     230
     231    callout = _IO_Driver_address_table[major].read;
     232    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
    172233}
    173234
     
    182243 *    minor        - device number
    183244 *    argument     - pointer to argument(s)
    184  *    return_value - pointer to driver's return value
    185  *
    186  *  Output Parameters:
    187  *    returns       - return code
    188  *    *return_value - driver's return code
     245 *
     246 *  Output Parameters:
     247 *    returns       - return code
    189248 */
    190249
     
    192251  rtems_device_major_number  major,
    193252  rtems_device_minor_number  minor,
    194   void             *argument,
    195   unsigned32       *return_value
    196 )
    197 {
    198   return _IO_Handler_routine(
    199             IO_WRITE_OPERATION,
    200             major,
    201             minor,
    202             argument,
    203             return_value
    204          );
     253  void             *argument
     254)
     255{
     256    rtems_device_driver_entry callout;
     257   
     258    if ( major >= _IO_Number_of_drivers )
     259        return RTEMS_INVALID_NUMBER;
     260
     261    callout = _IO_Driver_address_table[major].write;
     262    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
    205263}
    206264
     
    215273 *    minor        - device number
    216274 *    argument     - pointer to argument(s)
    217  *    return_value - pointer to driver's return value
    218  *
    219  *  Output Parameters:
    220  *    returns       - return code
    221  *    *return_value - driver's return code
     275 *
     276 *  Output Parameters:
     277 *    returns       - return code
    222278 */
    223279
     
    225281  rtems_device_major_number  major,
    226282  rtems_device_minor_number  minor,
    227   void             *argument,
    228   unsigned32       *return_value
    229 )
    230 {
    231   return _IO_Handler_routine(
    232             IO_CONTROL_OPERATION,
    233             major,
    234             minor,
    235             argument,
    236             return_value
    237          );
    238 }
    239 
    240 /*PAGE
    241  *
    242  *  _IO_Handler_routine
    243  *
    244  *  This routine implements all IO manager directives.
    245  *
    246  *  Input Paramters:
    247  *    operation    - I/O operation to be performed
    248  *    major        - device driver number
    249  *    minor        - device number
    250  *    argument     - pointer to argument(s)
    251  *    return_value - pointer to driver's return value
    252  *
    253  *  Output Parameters:
    254  *    returns       - return code
    255  *    *return_value - driver's return code
    256  */
    257 
    258 rtems_status_code _IO_Handler_routine(
    259   IO_operations              operation,
    260   rtems_device_major_number  major,
    261   rtems_device_minor_number  minor,
    262   void                      *argument,
    263   unsigned32                *return_value
    264 )
    265 {
    266   rtems_device_driver_entry io_callout;
    267 
    268   /*
    269    *  NOTE:  There is no range checking as in Ada because:
    270    *           + arrays in Ada are not always zero based.
    271    *           + with zero based arrays, a comparison of an unsigned
    272    *             number being less than zero would be necessary to
    273    *             check it as a range.  This would cause a warning for
    274    *             checking an unsigned number for being negative.
    275    */
    276 
    277   if ( major >= _IO_Number_of_drivers )
    278     return ( RTEMS_INVALID_NUMBER );
    279 
    280   switch ( operation ) {
    281      case IO_INITIALIZE_OPERATION:
    282         io_callout = _IO_Driver_address_table[ major ].initialization;
    283         break;
    284      case IO_OPEN_OPERATION:
    285         io_callout = _IO_Driver_address_table[ major ].open;
    286         break;
    287      case IO_CLOSE_OPERATION:
    288         io_callout = _IO_Driver_address_table[ major ].close;
    289         break;
    290      case IO_READ_OPERATION:
    291         io_callout = _IO_Driver_address_table[ major ].read;
    292         break;
    293      case IO_WRITE_OPERATION:
    294         io_callout = _IO_Driver_address_table[ major ].write;
    295         break;
    296      case IO_CONTROL_OPERATION:
    297         io_callout = _IO_Driver_address_table[ major ].control;
    298         break;
    299      default:             /* unreached -- only to remove warnings */
    300         io_callout = NULL;
    301         break;
    302   }
    303 
    304   if ( io_callout != NULL )
    305      (*io_callout)(
    306         major,
    307         minor,
    308         argument,
    309         _Thread_Executing->Object.id,
    310         return_value
    311      );
    312   else
    313      *return_value = 0;
    314 
    315   return( RTEMS_SUCCESSFUL );
    316 }
     283  void             *argument
     284)
     285{
     286    rtems_device_driver_entry callout;
     287   
     288    if ( major >= _IO_Number_of_drivers )
     289        return RTEMS_INVALID_NUMBER;
     290
     291    callout = _IO_Driver_address_table[major].control;
     292    return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
     293}
     294
  • c/src/exec/score/headers/object.h

    r3b438fa rb06e68ef  
    101101
    102102/*
     103 * Parameters and return id's for _Objects_Get_next
     104 */
     105
     106#define RTEMS_OBJECT_ID_INITIAL_INDEX   (0)
     107#define RTEMS_OBJECT_ID_FINAL_INDEX     (0xffff)
     108
     109#define RTEMS_OBJECT_ID_INITIAL(node)   (_Objects_Build_id(      \
     110                                            node, \
     111                                            RTEMS_OBJECT_ID_INITIAL_INDEX))
     112#define RTEMS_OBJECT_ID_FINAL           ((Objects_Id) ~0)
     113
     114/*
    103115 *  _Objects_Handler_initialization
    104116 *
     
    180192
    181193/*
     194 *  _Objects_Get_next
     195 *
     196 *  DESCRIPTION:
     197 *
     198 *  Like _Objects_Get, but is used to find "next" open object.
     199 *
     200 */
     201
     202Objects_Control *_Objects_Get_next(
     203    Objects_Information *information,
     204    Objects_Id           id,
     205    unsigned32          *location_p,
     206    Objects_Id          *next_id_p
     207);
     208
     209/*
    182210 *  _Objects_Is_name_valid
    183211 *
  • c/src/exec/score/headers/system.h

    r3b438fa rb06e68ef  
    7979#include <rtems/cpu.h>             /* processor specific information */
    8080#include <rtems/status.h>          /* RTEMS status codes */
     81#include <rtems/directives.h>
    8182
    8283/*
     
    104105#define stringify( _x ) # _x
    105106
     107#define RTEMS_offsetof(type, field) \
     108        ((unsigned32) &(((type *) 0)->field))
     109
    106110/*
    107111 *  The following is the extern for the RTEMS version string.
     
    116120 */
    117121
    118 #define NUMBER_OF_ENTRY_POINTS  79
    119 extern const void * _Entry_points[ NUMBER_OF_ENTRY_POINTS + 1 ];
     122extern const void * _Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ];
    120123
    121124/*
  • c/src/exec/score/headers/thread.h

    r3b438fa rb06e68ef  
    116116    unsigned32          segment_size;    /* size of segment requested    */
    117117    rtems_event_set     event_condition;
     118    unsigned32         *message_size_p;  /* ptr for return size of message */
    118119  } Extra;
    119120  void                 *return_argument; /* address of user return param */
  • c/src/exec/score/include/rtems/score/object.h

    r3b438fa rb06e68ef  
    101101
    102102/*
     103 * Parameters and return id's for _Objects_Get_next
     104 */
     105
     106#define RTEMS_OBJECT_ID_INITIAL_INDEX   (0)
     107#define RTEMS_OBJECT_ID_FINAL_INDEX     (0xffff)
     108
     109#define RTEMS_OBJECT_ID_INITIAL(node)   (_Objects_Build_id(      \
     110                                            node, \
     111                                            RTEMS_OBJECT_ID_INITIAL_INDEX))
     112#define RTEMS_OBJECT_ID_FINAL           ((Objects_Id) ~0)
     113
     114/*
    103115 *  _Objects_Handler_initialization
    104116 *
     
    180192
    181193/*
     194 *  _Objects_Get_next
     195 *
     196 *  DESCRIPTION:
     197 *
     198 *  Like _Objects_Get, but is used to find "next" open object.
     199 *
     200 */
     201
     202Objects_Control *_Objects_Get_next(
     203    Objects_Information *information,
     204    Objects_Id           id,
     205    unsigned32          *location_p,
     206    Objects_Id          *next_id_p
     207);
     208
     209/*
    182210 *  _Objects_Is_name_valid
    183211 *
  • c/src/exec/score/include/rtems/score/thread.h

    r3b438fa rb06e68ef  
    116116    unsigned32          segment_size;    /* size of segment requested    */
    117117    rtems_event_set     event_condition;
     118    unsigned32         *message_size_p;  /* ptr for return size of message */
    118119  } Extra;
    119120  void                 *return_argument; /* address of user return param */
  • c/src/exec/score/include/rtems/system.h

    r3b438fa rb06e68ef  
    7979#include <rtems/cpu.h>             /* processor specific information */
    8080#include <rtems/status.h>          /* RTEMS status codes */
     81#include <rtems/directives.h>
    8182
    8283/*
     
    104105#define stringify( _x ) # _x
    105106
     107#define RTEMS_offsetof(type, field) \
     108        ((unsigned32) &(((type *) 0)->field))
     109
    106110/*
    107111 *  The following is the extern for the RTEMS version string.
     
    116120 */
    117121
    118 #define NUMBER_OF_ENTRY_POINTS  79
    119 extern const void * _Entry_points[ NUMBER_OF_ENTRY_POINTS + 1 ];
     122extern const void * _Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ];
    120123
    121124/*
  • c/src/exec/score/src/object.c

    r3b438fa rb06e68ef  
    1313 *  $Id$
    1414 */
     15
    1516#include <rtems/system.h>
    1617#include <rtems/chain.h>
     
    227228  return the_object;
    228229}
     230
     231
     232/*PAGE
     233 *
     234 * _Objects_Get_next
     235 *
     236 * Like _Objects_Get, but considers the 'id' as a "hint" and
     237 * finds next valid one after that point.
     238 * Mostly used for monitor and debug traversal of an object.
     239 *
     240 * Input parameters:
     241 *   information - pointer to entry in table for this class
     242 *   id          - object id to search for
     243 *   location    - address of where to store the location
     244 *   next_id     - address to store next id to try
     245 *
     246 * Output parameters:
     247 *   returns     - address of object if local
     248 *   location    - one of the following:
     249 *                  OBJECTS_ERROR  - invalid object ID
     250 *                  OBJECTS_REMOTE - remote object
     251 *                  OBJECTS_LOCAL  - local object
     252 *   next_id     - will contain a reasonable "next" id to continue traversal
     253 *
     254 * NOTE:
     255 *      assumes can add '1' to an id to get to next index.
     256 */
     257
     258Objects_Control *
     259_Objects_Get_next(
     260    Objects_Information *information,
     261    Objects_Id           id,
     262    unsigned32          *location_p,
     263    Objects_Id          *next_id_p
     264)
     265{
     266    Objects_Control *object;
     267    Objects_Id       next_id;
     268   
     269    if (rtems_get_index(id) == RTEMS_OBJECT_ID_INITIAL_INDEX)
     270        next_id = information->minimum_id;
     271    else
     272        next_id = id;
     273
     274    do {
     275        /* walked off end of list? */
     276        if (next_id > information->maximum_id)
     277        {
     278            *location_p = OBJECTS_ERROR;
     279            goto final;
     280        }
     281       
     282        /* try to grab one */
     283        object = _Objects_Get(information, next_id, location_p);
     284
     285        next_id++;
     286
     287    } while (*location_p != OBJECTS_LOCAL);
     288
     289    *next_id_p = next_id;
     290    return object;
     291
     292final:
     293    *next_id_p = RTEMS_OBJECT_ID_FINAL;
     294    return 0;
     295}
Note: See TracChangeset for help on using the changeset viewer.