Changeset 8b96149 in rtems
- Timestamp:
- Apr 17, 2004, 8:15:17 AM (17 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- d63a2c2
- Parents:
- 714f06c
- Location:
- cpukit/libblock
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/libblock/include/rtems/bdbuf.h
r714f06c r8b96149 32 32 * dev and block fields are search key in AVL-tree. 33 33 * Modified buffers, free buffers and used buffers linked in 'mod', 'free' and 34 * 'lru' chains appropriately. 34 * 'lru' chains appropriately. 35 35 */ 36 36 … … 38 38 Chain_Node link; /* Link in the lru, mod or free chains */ 39 39 40 struct bdbuf_avl_node { 40 struct bdbuf_avl_node { 41 41 signed char cache; /* Cache */ 42 42 … … 87 87 88 88 /* rtems_bdbuf_init -- 89 * Prepare buffering layer to work - initialize buffer descritors 89 * Prepare buffering layer to work - initialize buffer descritors 90 90 * and (if it is neccessary) buffers. Buffers will be allocated accoriding 91 * to the configuration table, each entry describes kind of block and 91 * to the configuration table, each entry describes kind of block and 92 92 * amount requested. After initialization all blocks is placed into 93 93 * free elements lists. … … 108 108 * Obtain block buffer. If specified block already cached (i.e. there's 109 109 * block in the _modified_, or _recently_used_), return address 110 * of appropriate buffer descriptor and increment reference counter to 1. 111 * If block is not cached, allocate new buffer and return it. Data 112 * shouldn't be read to the buffer from media; buffer may contains 113 * arbitrary data. This primitive may be blocked if there are no free 114 * buffer descriptors available and there are no unused non-modified 110 * of appropriate buffer descriptor and increment reference counter to 1. 111 * If block is not cached, allocate new buffer and return it. Data 112 * shouldn't be read to the buffer from media; buffer may contains 113 * arbitrary data. This primitive may be blocked if there are no free 114 * buffer descriptors available and there are no unused non-modified 115 115 * (or synchronized with media) buffers available. 116 116 * … … 164 164 * PARAMETERS: 165 165 * bd_buf - pointer to the bdbuf_buffer structure previously obtained using 166 * get/read primitive. 166 * get/read primitive. 167 167 * 168 168 * RETURNS: … … 178 178 /* rtems_bdbuf_release_modified -- 179 179 * Release buffer allocated before, assuming that it is _modified_ by 180 * it's owner. This primitive decrease usage counter for buffer, mark 180 * it's owner. This primitive decrease usage counter for buffer, mark 181 181 * buffer descriptor as modified. If usage counter is 0, insert it at 182 182 * end of mod chain and release flush_sema semaphore to activate the … … 243 243 * RETURNS: 244 244 * RTEMS status code: RTEMS_SUCCESSFUL if operation completed successfully, 245 * RTEMS_INVALID_SIZE if specified block size is invalid (not a power 245 * RTEMS_INVALID_SIZE if specified block size is invalid (not a power 246 246 * of 2), RTEMS_NOT_DEFINED if buffer pool for this or greater block size 247 247 * is not configured. … … 257 257 * block_size - block size for which buffer pool is configured returned 258 258 * there 259 * blocks - number of buffers in buffer pool returned there 259 * blocks - number of buffers in buffer pool returned there 260 260 * 261 261 * RETURNS: -
cpukit/libblock/include/rtems/blkdev.h
r714f06c r8b96149 1 /* 1 /* 2 2 * blkdev.h - block device driver interface definitions 3 3 * … … 19 19 20 20 /* Interface with device drivers 21 * Block device looks, initialized and behaves like traditional RTEMS device 21 * Block device looks, initialized and behaves like traditional RTEMS device 22 22 * driver. Heart of the block device driver is in BIOREQUEST ioctl. This call 23 23 * puts I/O request to the block device queue, in priority order, for … … 44 44 * status != RTEMS_SUCCESSFUL 45 45 */ 46 typedef void (* blkdev_request_cb)(void *arg, 46 typedef void (* blkdev_request_cb)(void *arg, 47 47 rtems_status_code status, 48 48 int error); … … 57 57 58 58 /* blkdev_request (Block Device Request) structure is 59 * used to read/write a number of blocks from/to device. 59 * used to read/write a number of blocks from/to device. 60 60 */ 61 61 typedef struct blkdev_request { … … 64 64 void *done_arg; /* Argument to be passed to callback function*/ 65 65 rtems_status_code status; /* Last I/O operation completion status */ 66 int error; /* If status != RTEMS_SUCCESSFUL, this field 66 int error; /* If status != RTEMS_SUCCESSFUL, this field 67 67 * contains error code 68 68 */ 69 69 blkdev_bnum start; /* Start block number */ 70 70 uint32_t count; /* Number of blocks to be exchanged */ 71 uint32_t bufnum; /* Number of buffers provided */ 71 uint32_t bufnum; /* Number of buffers provided */ 72 72 73 73 blkdev_sg_buffer bufs[0];/* List of scatter/gather buffers */ … … 81 81 82 82 /* Device driver interface conventions suppose that driver may 83 * contain initialize/open/close/read/write/ioctl entry points. These 84 * primitives (except initialize) can be implemented in generic fashion, 83 * contain initialize/open/close/read/write/ioctl entry points. These 84 * primitives (except initialize) can be implemented in generic fashion, 85 85 * based upon supplied block device driver ioctl handler. Every block 86 86 * device driver should provide initialize entry point, which is register … … 105 105 106 106 /* blkdev_generic_write -- 107 * Generic block device driver write primitive. Implemented using block 108 * device buffer management primitives. 107 * Generic block device driver write primitive. Implemented using block 108 * device buffer management primitives. 109 109 */ 110 110 rtems_device_driver -
cpukit/libblock/include/rtems/diskdevs.h
r714f06c r8b96149 1 /* 1 /* 2 2 * logdisk.h - Physical and logical block devices (disks) support 3 3 * … … 49 49 in disk blocks */ 50 50 int block_size; /* Size of device block (minimum 51 transfer unit) in bytes 51 transfer unit) in bytes 52 52 (must be power of 2) */ 53 53 int block_size_log2; /* log2 of block_size */ … … 92 92 * invoked from application when application-specific splitting are in use, 93 93 * or from generic code which handle different logical disk organizations. 94 * This primitive will register device in rtems (invoke 94 * This primitive will register device in rtems (invoke 95 95 * rtems_io_register_name). 96 96 * … … 98 98 * dev - logical device identifier (major, minor numbers) 99 99 * phys - physical device (block device which holds this logical disk) 100 * identifier 100 * identifier 101 101 * start - starting block number on the physical device 102 102 * size - logical disk size in blocks … … 106 106 * RTEMS_SUCCESSFUL if logical device successfully added, or error code 107 107 * if error occured (device already registered, no physical device 108 * exists, logical disk is out of physical disk boundaries, no memory 108 * exists, logical disk is out of physical disk boundaries, no memory 109 109 * available). 110 110 */ … … 181 181 * 182 182 * RETURNS: 183 * RTEMS_SUCCESSFUL if library initialized, or error code if error 183 * RTEMS_SUCCESSFUL if library initialized, or error code if error 184 184 * occured. 185 185 */ … … 194 194 * 195 195 * RETURNS: 196 * RTEMS_SUCCESSFUL if all resources released, or error code if error 196 * RTEMS_SUCCESSFUL if all resources released, or error code if error 197 197 * occured. 198 198 */ -
cpukit/libblock/include/rtems/ide_part_table.h
r714f06c r8b96149 78 78 * corresponds to the sector on the device 79 79 */ 80 typedef struct sector_data_s 80 typedef struct sector_data_s 81 81 { 82 82 uint32_t sector_num; /* sector number on the device */ -
cpukit/libblock/src/bdbuf.c
r714f06c r8b96149 62 62 63 63 Chain_Control mod; /* Modified buffers list */ 64 rtems_id flush_sema; /* Buffer flush semaphore; counting 64 rtems_id flush_sema; /* Buffer flush semaphore; counting 65 65 semaphore; incremented when buffer 66 flushed to the disk; decremented when 66 flushed to the disk; decremented when 67 67 buffer modified */ 68 68 rtems_id swapout_task; /* Swapout task ID */ … … 463 463 r = q->avl.left; 464 464 if (r != NULL) 465 { 465 { 466 466 r->avl.bal = 0; 467 467 } … … 763 763 764 764 /* rtems_bdbuf_init -- 765 * Prepare buffering layer to work - initialize buffer descritors 765 * Prepare buffering layer to work - initialize buffer descritors 766 766 * and (if it is neccessary)buffers. Buffers will be allocated accoriding 767 * to the configuration table, each entry describes kind of block and 767 * to the configuration table, each entry describes kind of block and 768 768 * amount requested. After initialization all blocks is placed into 769 769 * free elements lists. … … 832 832 rtems_build_name('B', 'S', 'W', 'P'), 833 833 SWAPOUT_PRIORITY, 834 SWAPOUT_STACK_SIZE, 834 SWAPOUT_STACK_SIZE, 835 835 RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT, 836 836 RTEMS_DEFAULT_ATTRIBUTES, … … 863 863 * obtain block buffer. If specified block already cached (i.e. there's 864 864 * block in the _modified_, or _recently_used_), return address 865 * of appropriate buffer descriptor and increment reference counter to 1. 866 * If block is not cached, allocate new buffer and return it. Data 867 * shouldn't be read to the buffer from media; buffer contains arbitrary 868 * data. This primitive may be blocked if there are no free buffer 869 * descriptors available and there are no unused non-modified (or 865 * of appropriate buffer descriptor and increment reference counter to 1. 866 * If block is not cached, allocate new buffer and return it. Data 867 * shouldn't be read to the buffer from media; buffer contains arbitrary 868 * data. This primitive may be blocked if there are no free buffer 869 * descriptors available and there are no unused non-modified (or 870 870 * synchronized with media) buffers available. 871 871 * … … 887 887 static rtems_status_code 888 888 find_or_assign_buffer(disk_device *dd, 889 blkdev_bnum block, 889 blkdev_bnum block, 890 890 bdbuf_buffer **ret_buf) 891 891 { … … 909 909 { 910 910 /* Try to obtain semaphore without waiting first. It is the most 911 frequent case when reasonable number of buffers configured. If 912 it is failed, obtain semaphore blocking on it. In this case 913 it should be checked that appropriate buffer hasn't been loaded 911 frequent case when reasonable number of buffers configured. If 912 it is failed, obtain semaphore blocking on it. In this case 913 it should be checked that appropriate buffer hasn't been loaded 914 914 by another thread, because this thread is preempted */ 915 915 rc = rtems_semaphore_obtain(bd_pool->bufget_sema, RTEMS_NO_WAIT, 0); … … 932 932 if (bd_buf != NULL) 933 933 { 934 int avl_result; 934 int avl_result; 935 935 avl_result = avl_remove(&bd_pool->tree, bd_buf); 936 936 if (avl_result != 0) … … 987 987 if (bd_buf->modified) 988 988 { 989 rc = rtems_semaphore_obtain(bd_ctx.flush_sema, 989 rc = rtems_semaphore_obtain(bd_ctx.flush_sema, 990 990 RTEMS_NO_WAIT, 0); 991 991 } 992 992 else 993 993 { 994 rc = rtems_semaphore_obtain(bd_pool->bufget_sema, 994 rc = rtems_semaphore_obtain(bd_pool->bufget_sema, 995 995 RTEMS_NO_WAIT, 0); 996 996 } 997 /* It is possible that we couldn't obtain flush or bufget sema 997 /* It is possible that we couldn't obtain flush or bufget sema 998 998 * although buffer in the appropriate chain is available: 999 * semaphore may be released to swapout task, but this task 999 * semaphore may be released to swapout task, but this task 1000 1000 * actually did not start to process it. */ 1001 1001 if (rc == RTEMS_UNSATISFIED) … … 1027 1027 * Obtain block buffer. If specified block already cached (i.e. there's 1028 1028 * block in the _modified_, or _recently_used_), return address 1029 * of appropriate buffer descriptor and increment reference counter to 1. 1030 * If block is not cached, allocate new buffer and return it. Data 1031 * shouldn't be read to the buffer from media; buffer may contains 1032 * arbitrary data. This primitive may be blocked if there are no free 1033 * buffer descriptors available and there are no unused non-modified 1029 * of appropriate buffer descriptor and increment reference counter to 1. 1030 * If block is not cached, allocate new buffer and return it. Data 1031 * shouldn't be read to the buffer from media; buffer may contains 1032 * arbitrary data. This primitive may be blocked if there are no free 1033 * buffer descriptors available and there are no unused non-modified 1034 1034 * (or synchronized with media) buffers available. 1035 1035 * … … 1094 1094 mutex_attr.priority_ceiling = 0; 1095 1095 1096 _CORE_mutex_Initialize(&bd_buf->transfer_sema, 1096 _CORE_mutex_Initialize(&bd_buf->transfer_sema, 1097 1097 &mutex_attr, CORE_MUTEX_LOCKED); 1098 1098 } … … 1121 1121 bd_buf->in_progress = bd_buf->modified = FALSE; 1122 1122 _CORE_mutex_Surrender(&bd_buf->transfer_sema, 0, NULL); 1123 _CORE_mutex_Flush(&bd_buf->transfer_sema, NULL, 1123 _CORE_mutex_Flush(&bd_buf->transfer_sema, NULL, 1124 1124 CORE_MUTEX_STATUS_SUCCESSFUL); 1125 1125 } … … 1147 1147 bd_buf->error = RTEMS_IO_ERROR; 1148 1148 _CORE_mutex_Surrender(&bd_buf->transfer_sema, 0, NULL); 1149 _CORE_mutex_Flush(&bd_buf->transfer_sema, NULL, 1149 _CORE_mutex_Flush(&bd_buf->transfer_sema, NULL, 1150 1150 CORE_MUTEX_STATUS_SUCCESSFUL); 1151 1151 } … … 1173 1173 */ 1174 1174 rtems_status_code 1175 rtems_bdbuf_read(dev_t device, 1175 rtems_bdbuf_read(dev_t device, 1176 1176 blkdev_bnum block, 1177 1177 bdbuf_buffer **bd) … … 1295 1295 else 1296 1296 { 1297 /* Buffer was not modified. Add this descriptor to the 1297 /* Buffer was not modified. Add this descriptor to the 1298 1298 * end of lru chain and make it available for reuse. */ 1299 1299 Chain_Append(&bd_pool->lru, &bd_buf->link); … … 1315 1315 * PARAMETERS: 1316 1316 * bd_buf - pointer to the bdbuf_buffer structure previously obtained using 1317 * get/read primitive. 1317 * get/read primitive. 1318 1318 * 1319 1319 * RETURNS: … … 1344 1344 /* rtems_bdbuf_release_modified -- 1345 1345 * Release buffer allocated before, assuming that it is _modified_ by 1346 * it's owner. This primitive decrease usage counter for buffer, mark 1346 * it's owner. This primitive decrease usage counter for buffer, mark 1347 1347 * buffer descriptor as modified. If usage counter is 0, insert it at 1348 1348 * end of mod chain and release flush_sema semaphore to activate the … … 1377 1377 bd_buf->modified = TRUE; 1378 1378 bd_buf->actual = TRUE; 1379 rc = bdbuf_release(bd_buf); 1379 rc = bdbuf_release(bd_buf); 1380 1380 1381 1381 ENABLE_PREEMPTION(key); … … 1480 1480 * disk. 1481 1481 */ 1482 static rtems_task 1482 static rtems_task 1483 1483 bdbuf_swapout_task(rtems_task_argument unused) 1484 1484 { … … 1522 1522 req.req.bufs[0].buffer = bd_buf->buffer; 1523 1523 1524 /* transfer_sema initialized when bd_buf inserted in the mod chain 1524 /* transfer_sema initialized when bd_buf inserted in the mod chain 1525 1525 first time */ 1526 1526 result = dd->ioctl(dd->phys_dev->dev, BLKIO_REQUEST, &req); … … 1576 1576 * RETURNS: 1577 1577 * RTEMS status code: RTEMS_SUCCESSFUL if operation completed successfully, 1578 * RTEMS_INVALID_SIZE if specified block size is invalid (not a power 1578 * RTEMS_INVALID_SIZE if specified block size is invalid (not a power 1579 1579 * of 2), RTEMS_NOT_DEFINED if buffer pool for this or greater block size 1580 1580 * is not configured. … … 1624 1624 * block_size - block size for which buffer pool is configured returned 1625 1625 * there 1626 * blocks - number of buffers in buffer pool returned there 1626 * blocks - number of buffers in buffer pool returned there 1627 1627 * 1628 1628 * RETURNS: -
cpukit/libblock/src/blkdev.c
r714f06c r8b96149 1 /* 2 * blkdev.h - block device driver generic support 1 /* 2 * blkdev.h - block device driver generic support 3 3 * 4 4 * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia … … 83 83 /* rtems_blkdev_generic_write -- 84 84 * Generic block device write primitive. Implemented using block device 85 * buffer management primitives. 85 * buffer management primitives. 86 86 */ 87 87 rtems_device_driver … … 234 234 blkdev_request *req = args->buffer; 235 235 req->start += dd->start; 236 args->ioctl_return = dd->ioctl(dd->phys_dev->dev, args->command, 236 args->ioctl_return = dd->ioctl(dd->phys_dev->dev, args->command, 237 237 req); 238 238 break; … … 240 240 241 241 default: 242 args->ioctl_return = dd->ioctl(dd->phys_dev->dev, args->command, 242 args->ioctl_return = dd->ioctl(dd->phys_dev->dev, args->command, 243 243 args->buffer); 244 244 break; -
cpukit/libblock/src/diskdevs.c
r714f06c r8b96149 1 /* 1 /* 2 2 * diskdevs.c - Physical and logical block devices (disks) support 3 3 * … … 298 298 * invoked from application when application-specific splitting are in use, 299 299 * or from generic code which handle different logical disk organizations. 300 * This primitive will register device in rtems (invoke 300 * This primitive will register device in rtems (invoke 301 301 * rtems_io_register_name). 302 302 * … … 304 304 * dev - logical device identifier (major, minor numbers) 305 305 * phys - physical device (block device which holds this logical disk) 306 * identifier 306 * identifier 307 307 * start - starting block number on the physical device 308 308 * size - logical disk size in blocks … … 312 312 * RTEMS_SUCCESSFUL if logical device successfully added, or error code 313 313 * if error occured (device already registered, no physical device 314 * exists, logical disk is out of physical disk boundaries, no memory 314 * exists, logical disk is out of physical disk boundaries, no memory 315 315 * available). 316 316 */ … … 459 459 { 460 460 rtems_interrupt_enable(level); 461 rc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, 461 rc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, 462 462 RTEMS_NO_TIMEOUT); 463 463 if (rc != RTEMS_SUCCESSFUL) … … 525 525 526 526 dtab = disktab + major; 527 while (TRUE) 527 while (TRUE) 528 528 { 529 529 if ((dtab == NULL) || (minor > dtab->size)) … … 551 551 * 552 552 * RETURNS: 553 * RTEMS_SUCCESSFUL if library initialized, or error code if error 553 * RTEMS_SUCCESSFUL if library initialized, or error code if error 554 554 * occured. 555 555 */ … … 570 570 rc = rtems_semaphore_create( 571 571 rtems_build_name('D', 'D', 'E', 'V'), 1, 572 RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY | 572 RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY | 573 573 RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL, 0, &diskdevs_mutex); 574 574 … … 600 600 * 601 601 * RETURNS: 602 * RTEMS_SUCCESSFUL if all resources released, or error code if error 602 * RTEMS_SUCCESSFUL if all resources released, or error code if error 603 603 * occured. 604 604 */ … … 610 610 rtems_status_code rc; 611 611 612 /* Free data structures */ 612 /* Free data structures */ 613 613 for (maj = 0; maj < disktab_size; maj++) 614 614 { -
cpukit/libblock/src/ide_part_table.c
r714f06c r8b96149 47 47 */ 48 48 static rtems_status_code 49 get_sector(dev_t dev, uint32_t sector_num, sector_data_t **sector) 49 get_sector(dev_t dev, uint32_t sector_num, sector_data_t **sector) 50 50 { 51 51 sector_data_t *s; … … 93 93 */ 94 94 static rtems_boolean 95 msdos_signature_check (sector_data_t *sector) 95 msdos_signature_check (sector_data_t *sector) 96 96 { 97 97 uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET; … … 113 113 */ 114 114 static rtems_boolean 115 is_extended(uint8_t type) 115 is_extended(uint8_t type) 116 116 { 117 117 return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED)); … … 129 129 */ 130 130 static rtems_boolean 131 is_fat_partition(uint8_t type) 131 is_fat_partition(uint8_t type) 132 132 { 133 133 static const uint8_t fat_part_types[] = { … … 187 187 188 188 /* 189 * use partitions that are 189 * use partitions that are 190 190 * - extended 191 191 * or … … 196 196 *new_part_desc = part_desc; 197 197 } 198 else { 198 else { 199 199 /* empty partition */ 200 200 free(part_desc); … … 210 210 * 211 211 * PARAMETERS: 212 * start - start sector of primary extended partition, used for 212 * start - start sector of primary extended partition, used for 213 213 * calculation of absolute partition sector address 214 214 * ext_part - description of extended partition to process … … 220 220 */ 221 221 static rtems_status_code 222 read_extended_partition(uint32_t start, part_desc_t *ext_part) 222 read_extended_partition(uint32_t start, part_desc_t *ext_part) 223 223 { 224 224 int i; … … 257 257 data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET; 258 258 259 for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++) 259 for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++) 260 260 { 261 261 /* if data_to_part_desc fails skip this partition … … 279 279 new_part_desc->disk_desc = ext_part->disk_desc; 280 280 281 if (is_extended(new_part_desc->sys_type)) 281 if (is_extended(new_part_desc->sys_type)) 282 282 { 283 283 new_part_desc->log_id = EMPTY_PARTITION; 284 284 new_part_desc->start += start; 285 read_extended_partition(start, new_part_desc); 286 } 287 else 285 read_extended_partition(start, new_part_desc); 286 } 287 else 288 288 { 289 289 disk_desc_t *disk_desc = new_part_desc->disk_desc; … … 315 315 */ 316 316 static rtems_status_code 317 read_mbr(disk_desc_t *disk_desc) 317 read_mbr(disk_desc_t *disk_desc) 318 318 { 319 319 int part_num; … … 352 352 } 353 353 354 if (part_desc != NULL) 354 if (part_desc != NULL) 355 355 { 356 356 part_desc->log_id = part_num + 1; … … 358 358 part_desc->end = part_desc->start + part_desc->size - 1; 359 359 disk_desc->partitions[part_num] = part_desc; 360 } 360 } 361 361 else 362 362 { -
cpukit/libblock/src/ramdisk.c
r714f06c r8b96149 30 30 void *area; /* RAM disk memory area */ 31 31 rtems_boolean initialized;/* RAM disk is initialized */ 32 rtems_boolean malloced; /* != 0, if memory allocated by malloc for this 32 rtems_boolean malloced; /* != 0, if memory allocated by malloc for this 33 33 RAM disk */ 34 34 }; … … 41 41 * disk to supplied buffer and invoke the callout function to inform 42 42 * upper layer that reading is completed. 43 * 43 * 44 44 * PARAMETERS: 45 45 * req - pointer to the READ block device request info … … 76 76 * supplied buffer to RAM disk and invoke the callout function to inform 77 77 * upper layer that writing is completed. 78 * 78 * 79 79 * PARAMETERS: 80 80 * req - pointer to the WRITE block device request info … … 160 160 161 161 /* ramdisk_initialize -- 162 * RAM disk device driver initialization. Run through RAM disk 162 * RAM disk device driver initialization. Run through RAM disk 163 163 * configuration information and configure appropriate RAM disks. 164 164 * … … 186 186 return rc; 187 187 188 r = ramdisk = calloc(rtems_ramdisk_configuration_size, 188 r = ramdisk = calloc(rtems_ramdisk_configuration_size, 189 189 sizeof(struct ramdisk)); 190 190
Note: See TracChangeset
for help on using the changeset viewer.