From 55568af2e70d7026b57fe54ce14f6980a37c4e08 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 26 Mar 2007 22:31:31 +0000 Subject: 2007-03-26 Joel Sherrill * 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. --- cpukit/libcsupport/src/libio_init.c | 90 +++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 cpukit/libcsupport/src/libio_init.c (limited to 'cpukit/libcsupport/src/libio_init.c') diff --git a/cpukit/libcsupport/src/libio_init.c b/cpukit/libcsupport/src/libio_init.c new file mode 100644 index 0000000000..4968058637 --- /dev/null +++ b/cpukit/libcsupport/src/libio_init.c @@ -0,0 +1,90 @@ +/* + * This file contains the support infrastructure used to manage the + * table of integer style file descriptors used by the low level + * POSIX system calls like open(), read, fstat(), etc. + * + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include /* libio_.h pulls in rtems */ +#include +#include /* assoc.h not included by rtems.h */ + +#include /* O_RDONLY, et.al. */ +#include /* O_RDONLY, et.al. */ +#include +#include + +#include +#include /* strcmp */ +#include +#include /* calloc() */ + +#include /* libio.h not pulled in by rtems */ + +/* + * File descriptor Table Information + */ + +extern uint32_t rtems_libio_number_iops; +rtems_id rtems_libio_semaphore; +rtems_libio_t *rtems_libio_iops; +rtems_libio_t *rtems_libio_iop_freelist; + +/* + * rtems_libio_init + * + * Called by BSP startup code to initialize the libio subsystem. + */ + +void rtems_libio_init( void ) +{ + rtems_status_code rc; + int i; + rtems_libio_t *iop; + + if (rtems_libio_number_iops > 0) + { + rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops, + sizeof(rtems_libio_t)); + if (rtems_libio_iops == NULL) + rtems_fatal_error_occurred(RTEMS_NO_MEMORY); + + iop = rtems_libio_iop_freelist = rtems_libio_iops; + for (i = 0 ; i < (rtems_libio_number_iops - 1) ; i++, iop++) + iop->data1 = iop + 1; + iop->data1 = NULL; + } + + /* + * Create the binary semaphore used to provide mutual exclusion + * on the IOP Table. + */ + + rc = rtems_semaphore_create( + RTEMS_LIBIO_SEM, + 1, + RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, + RTEMS_NO_PRIORITY, + &rtems_libio_semaphore + ); + if ( rc != RTEMS_SUCCESSFUL ) + rtems_fatal_error_occurred( rc ); + + /* + * Initialize the base file system infrastructure. + */ + + rtems_filesystem_initialize(); +} -- cgit v1.2.3