Changeset a35b458 in mainline for uspace/srv/bd/rd/rd.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/rd/rd.c
r3061bc1 ra35b458 119 119 return ELIMIT; 120 120 } 121 121 122 122 fibril_rwlock_read_lock(&rd_lock); 123 123 memcpy(buf, rd_addr + ba * block_size, min(block_size * cnt, size)); 124 124 fibril_rwlock_read_unlock(&rd_lock); 125 125 126 126 return EOK; 127 127 } … … 135 135 return ELIMIT; 136 136 } 137 137 138 138 fibril_rwlock_write_lock(&rd_lock); 139 139 memcpy(rd_addr + ba * block_size, buf, min(block_size * cnt, size)); 140 140 fibril_rwlock_write_unlock(&rd_lock); 141 141 142 142 return EOK; 143 143 } … … 152 152 return false; 153 153 } 154 154 155 155 sysarg_t addr_phys; 156 156 ret = sysinfo_get_value("rd.address.physical", &addr_phys); … … 159 159 return false; 160 160 } 161 161 162 162 rd_size = ALIGN_UP(size, block_size); 163 163 unsigned int flags = 164 164 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE; 165 165 166 166 ret = physmem_map(addr_phys, 167 167 ALIGN_UP(rd_size, PAGE_SIZE) >> PAGE_WIDTH, flags, &rd_addr); … … 170 170 return false; 171 171 } 172 172 173 173 printf("%s: Found RAM disk at %p, %" PRIun " bytes\n", NAME, 174 174 (void *) addr_phys, size); 175 175 176 176 bd_srvs_init(&bd_srvs); 177 177 bd_srvs.ops = &rd_bd_ops; 178 178 179 179 async_set_fallback_port_handler(rd_client_conn, NULL); 180 180 ret = loc_server_register(NAME); … … 183 183 return false; 184 184 } 185 185 186 186 service_id_t service_id; 187 187 ret = loc_service_register("bd/initrd", &service_id); … … 190 190 return false; 191 191 } 192 192 193 193 fibril_rwlock_initialize(&rd_lock); 194 194 195 195 return true; 196 196 } … … 213 213 { 214 214 printf("%s: HelenOS RAM disk server\n", NAME); 215 215 216 216 if (!rd_init()) 217 217 return -1; 218 218 219 219 printf("%s: Accepting connections\n", NAME); 220 220 async_manager(); 221 221 222 222 /* Never reached */ 223 223 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.