rtems_status_code rtems_disk_io_initialize(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_device_major_number size = DISKTAB_INITIAL_SIZE; if (disktab_size > 0) { return RTEMS_SUCCESSFUL; } disktab = calloc(size, sizeof(rtems_disk_device_table)); if (disktab == NULL) { return RTEMS_NO_MEMORY; } diskdevs_protected = false; sc = rtems_semaphore_create( rtems_build_name('D', 'D', 'E', 'V'), 1, RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL, 0, &diskdevs_mutex ); if (sc != RTEMS_SUCCESSFUL) { free(disktab); return RTEMS_NO_MEMORY; } sc = rtems_bdbuf_init(); if (sc != RTEMS_SUCCESSFUL) { rtems_semaphore_delete(diskdevs_mutex); free(disktab); return RTEMS_UNSATISFIED; } disktab_size = size; return RTEMS_SUCCESSFUL; }
static void early_initialization(void) { rtems_status_code sc; sc = rtems_bdbuf_init(); assert(sc == RTEMS_SUCCESSFUL); sc = rtems_media_initialize(); assert(sc == RTEMS_SUCCESSFUL); sc = rtems_media_listener_add(media_listener, NULL); assert(sc == RTEMS_SUCCESSFUL); sc = rtems_media_server_initialize( 200, 32 * 1024, RTEMS_DEFAULT_MODES, RTEMS_DEFAULT_ATTRIBUTES ); assert(sc == RTEMS_SUCCESSFUL); }