Changeset 55568af in rtems


Ignore:
Timestamp:
Mar 26, 2007, 10:31:31 PM (13 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
359322a
Parents:
3041f69
Message:

2007-03-26 Joel Sherrill <joel@…>

  • libcsupport/src/assoc.c, libcsupport/src/libio.c, libcsupport/src/write.c: Split files to shrink minimum.exe. Hopefully this will not be deemed necessary to commit to the 4.7 branch.
  • libcsupport/src/assoclocalbyname.c, libcsupport/src/assoclocalbyremote.c, libcsupport/src/assoclocalbyremotebitfield.c, libcsupport/src/assocnamebylocal.c, libcsupport/src/assocnamebylocalbitfield.c, libcsupport/src/assocnamebyremote.c, libcsupport/src/assocnamebyremotebitfield.c, libcsupport/src/assocptrbylocal.c, libcsupport/src/assocptrbyname.c, libcsupport/src/assocptrbyremote.c, libcsupport/src/assocremotebylocal.c, libcsupport/src/assocremotebylocalbitfield.c, libcsupport/src/assocremotebyname.c, libcsupport/src/libio_init.c, libcsupport/src/write_r.c: New files.
Location:
cpukit
Files:
15 added
4 edited

Legend:

Unmodified
Added
Removed
  • cpukit/ChangeLog

    r3041f69 r55568af  
     12007-03-26      Joel Sherrill <joel@OARcorp.com>
     2
     3        * libcsupport/src/assoc.c, libcsupport/src/libio.c,
     4        libcsupport/src/write.c: Split files to shrink minimum.exe. Hopefully
     5        this will not be deemed necessary to commit to the 4.7 branch.
     6        * libcsupport/src/assoclocalbyname.c,
     7        libcsupport/src/assoclocalbyremote.c,
     8        libcsupport/src/assoclocalbyremotebitfield.c,
     9        libcsupport/src/assocnamebylocal.c,
     10        libcsupport/src/assocnamebylocalbitfield.c,
     11        libcsupport/src/assocnamebyremote.c,
     12        libcsupport/src/assocnamebyremotebitfield.c,
     13        libcsupport/src/assocptrbylocal.c, libcsupport/src/assocptrbyname.c,
     14        libcsupport/src/assocptrbyremote.c,
     15        libcsupport/src/assocremotebylocal.c,
     16        libcsupport/src/assocremotebylocalbitfield.c,
     17        libcsupport/src/assocremotebyname.c, libcsupport/src/libio_init.c,
     18        libcsupport/src/write_r.c: New files.
     19
    1202007-03-26      Joel Sherrill <joel@OARcorp.com>
    221
  • cpukit/libcsupport/src/assoc.c

    r3041f69 r55568af  
    1010#endif
    1111
     12#define INSIDE_ASSOC
     13
    1214#include <rtems.h>
    1315#include <rtems/assoc.h>
     
    1517#include <string.h>             /* strcat, strcmp */
    1618
    17 #define STREQ(a,b)      (strcmp((a), (b)) == 0)
    18 #define rtems_assoc_is_default(ap)  ((ap)->name && STREQ(ap->name, RTEMS_ASSOC_DEFAULT_NAME))
    1919
    20 const rtems_assoc_t *
    21 rtems_assoc_ptr_by_name(
    22     const rtems_assoc_t *ap,
    23     const char *name
    24   )
     20const rtems_assoc_t *rtems_assoc_ptr_by_name(
     21  const rtems_assoc_t *ap,
     22  const char          *name
     23)
    2524{
    26     const rtems_assoc_t *default_ap = 0;
     25  const rtems_assoc_t *default_ap = 0;
    2726
    28     if (rtems_assoc_is_default(ap))
    29         default_ap = ap++;
     27  if (rtems_assoc_is_default(ap))
     28    default_ap = ap++;
    3029
    31     for ( ; ap->name; ap++)
    32         if (strcmp(ap->name, name) == 0)
    33             return ap;
     30  for ( ; ap->name; ap++)
     31    if (strcmp(ap->name, name) == 0)
     32        return ap;
    3433
    35     return default_ap;
     34  return default_ap;
    3635}
    37 
    38 const rtems_assoc_t *
    39 rtems_assoc_ptr_by_local(
    40     const rtems_assoc_t *ap,
    41     uint32_t       local_value
    42   )
    43 {
    44     const rtems_assoc_t *default_ap = 0;
    45 
    46     if (rtems_assoc_is_default(ap))
    47         default_ap = ap++;
    48 
    49     for ( ; ap->name; ap++)
    50         if (ap->local_value == local_value)
    51             return ap;
    52 
    53     return default_ap;
    54 }
    55 
    56 
    57 const rtems_assoc_t *
    58 rtems_assoc_ptr_by_remote(
    59     const rtems_assoc_t *ap,
    60     uint32_t       remote_value
    61   )
    62 {
    63     const rtems_assoc_t *default_ap = 0;
    64 
    65     if (rtems_assoc_is_default(ap))
    66         default_ap = ap++;
    67 
    68     for ( ; ap->name; ap++)
    69         if (ap->remote_value == remote_value)
    70             return ap;
    71 
    72     return default_ap;
    73 }
    74 
    75 
    76 /*
    77  * Get values
    78  */
    79 
    80 uint32_t
    81 rtems_assoc_remote_by_local(
    82     const rtems_assoc_t *ap,
    83     uint32_t       local_value
    84   )
    85 {
    86     const rtems_assoc_t *nap;
    87     nap = rtems_assoc_ptr_by_local(ap, local_value);
    88     if (nap)
    89         return nap->remote_value;
    90 
    91     return 0;
    92 }
    93 
    94 uint32_t
    95 rtems_assoc_local_by_remote(
    96     const rtems_assoc_t *ap,
    97     uint32_t       remote_value
    98   )
    99 {
    100     const rtems_assoc_t *nap;
    101     nap = rtems_assoc_ptr_by_remote(ap, remote_value);
    102     if (nap)
    103         return nap->local_value;
    104 
    105     return 0;
    106 }
    107 
    108 uint32_t
    109 rtems_assoc_remote_by_name(
    110     const rtems_assoc_t *ap,
    111     const char          *name
    112   )
    113 {
    114     const rtems_assoc_t *nap;
    115     nap = rtems_assoc_ptr_by_name(ap, name);
    116     if (nap)
    117         return nap->remote_value;
    118 
    119     return 0;
    120 }
    121 
    122 uint32_t
    123 rtems_assoc_local_by_name(
    124     const rtems_assoc_t *ap,
    125     const char          *name
    126   )
    127 {
    128     const rtems_assoc_t *nap;
    129     nap = rtems_assoc_ptr_by_name(ap, name);
    130     if (nap)
    131         return nap->local_value;
    132 
    133     return 0;
    134 }
    135 
    136 /*
    137  * what to return if a value is not found
    138  * this is not reentrant, but it really shouldn't be invoked anyway
    139  */
    140 
    141 const char *rtems_assoc_name_bad(
    142     uint32_t   bad_value
    143 );
    144 
    145 /* body in separate file to reduce dependency on printf */
    146 
    147 
    148 const char *
    149 rtems_assoc_name_by_local(
    150     const rtems_assoc_t *ap,
    151     uint32_t       local_value
    152   )
    153 {
    154     const rtems_assoc_t *nap;
    155     nap = rtems_assoc_ptr_by_local(ap, local_value);
    156     if (nap)
    157         return nap->name;
    158 
    159     return rtems_assoc_name_bad(local_value);
    160 }
    161 
    162 const char *
    163 rtems_assoc_name_by_remote(
    164     const rtems_assoc_t *ap,
    165     uint32_t       remote_value
    166   )
    167 {
    168     const rtems_assoc_t *nap;
    169     nap = rtems_assoc_ptr_by_remote(ap, remote_value);
    170     if (nap)
    171         return nap->name;
    172 
    173     return rtems_assoc_name_bad(remote_value);
    174 }
    175 
    176 /*
    177  * Bitfield functions assume just 1 bit set in each of remote and local
    178  *      entries; they do not check for this.
    179  */
    180 
    181 uint32_t   rtems_assoc_remote_by_local_bitfield(
    182     const rtems_assoc_t *ap,
    183     uint32_t       local_value
    184   )
    185 {
    186     uint32_t   b;
    187     uint32_t   remote_value = 0;
    188 
    189     for (b = 1; b; b <<= 1)
    190         if (b & local_value)
    191             remote_value |= rtems_assoc_remote_by_local(ap, b);
    192 
    193     return remote_value;
    194 }
    195 
    196 
    197 uint32_t   rtems_assoc_local_by_remote_bitfield(
    198     const rtems_assoc_t *ap,
    199     uint32_t       remote_value
    200   )
    201 {
    202     uint32_t   b;
    203     uint32_t   local_value = 0;
    204 
    205     for (b = 1; b; b <<= 1)
    206         if (b & remote_value)
    207             local_value |= rtems_assoc_local_by_remote(ap, b);
    208 
    209     return local_value;
    210 }
    211 
    212 char *
    213 rtems_assoc_name_by_remote_bitfield(
    214     const rtems_assoc_t *ap,
    215     uint32_t       value,
    216     char          *buffer
    217   )
    218 {
    219     uint32_t   b;
    220 
    221     *buffer = 0;
    222 
    223     for (b = 1; b; b <<= 1)
    224         if (b & value)
    225         {
    226             if (*buffer)
    227                 strcat(buffer, " ");
    228             strcat(buffer, rtems_assoc_name_by_remote(ap, b));
    229         }
    230 
    231     return buffer;
    232 }
    233 
    234 char *
    235 rtems_assoc_name_by_local_bitfield(
    236     const rtems_assoc_t *ap,
    237     uint32_t       value,
    238     char          *buffer
    239   )
    240 {
    241     uint32_t   b;
    242 
    243     *buffer = 0;
    244 
    245     for (b = 1; b; b <<= 1)
    246         if (b & value)
    247         {
    248             if (*buffer)
    249                 strcat(buffer, " ");
    250             strcat(buffer, rtems_assoc_name_by_local(ap, b));
    251         }
    252 
    253     return buffer;
    254 }
  • cpukit/libcsupport/src/libio.c

    r3041f69 r55568af  
    5252 */
    5353
    54 extern uint32_t    rtems_libio_number_iops;
    55 rtems_id           rtems_libio_semaphore;
    56 rtems_libio_t     *rtems_libio_iops;
    57 rtems_libio_t     *rtems_libio_iop_freelist;
    58 
    59 /*
    60  *  rtems_libio_init
    61  *
    62  *  Called by BSP startup code to initialize the libio subsystem.
    63  */
    64 
    65 void rtems_libio_init( void )
    66 {
    67     rtems_status_code rc;
    68     int i;
    69     rtems_libio_t *iop;
    70 
    71     if (rtems_libio_number_iops > 0)
    72     {
    73         rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
    74                                                     sizeof(rtems_libio_t));
    75         if (rtems_libio_iops == NULL)
    76             rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
    77 
    78         iop = rtems_libio_iop_freelist = rtems_libio_iops;
    79         for (i = 0 ; i < (rtems_libio_number_iops - 1) ; i++, iop++)
    80                 iop->data1 = iop + 1;
    81         iop->data1 = NULL;
    82     }
    83 
    84   /*
    85    *  Create the binary semaphore used to provide mutual exclusion
    86    *  on the IOP Table.
    87    */
    88 
    89   rc = rtems_semaphore_create(
    90     RTEMS_LIBIO_SEM,
    91     1,
    92     RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
    93     RTEMS_NO_PRIORITY,
    94     &rtems_libio_semaphore
    95   );
    96   if ( rc != RTEMS_SUCCESSFUL )
    97     rtems_fatal_error_occurred( rc );
    98 
    99   /*
    100    *  Initialize the base file system infrastructure.
    101    */
    102 
    103   rtems_filesystem_initialize();
    104 }
     54extern uint32_t       rtems_libio_number_iops;
     55extern rtems_id       rtems_libio_semaphore;
     56extern rtems_libio_t *rtems_libio_iops;
     57extern rtems_libio_t *rtems_libio_iop_freelist;
    10558
    10659/*
  • cpukit/libcsupport/src/write.c

    r3041f69 r55568af  
    22 *  write() - POSIX 1003.1b 6.4.2 - Write to a File
    33 *
    4  *  COPYRIGHT (c) 1989-1999.
     4 *  COPYRIGHT (c) 1989-2007.
    55 *  On-Line Applications Research Corporation (OAR).
    66 *
     
    5656  return rc;
    5757}
    58 
    59 /*
    60  *  _write_r
    61  *
    62  *  This is the Newlib dependent reentrant version of write().
    63  */
    64 
    65 #if defined(RTEMS_NEWLIB)
    66 
    67 #include <reent.h>
    68 
    69 _ssize_t _write_r(
    70   struct _reent *ptr,
    71   int            fd,
    72   const void    *buf,
    73   size_t         nbytes
    74 )
    75 {
    76   return write( fd, buf, nbytes );
    77 }
    78 #endif
Note: See TracChangeset for help on using the changeset viewer.