Changeset 1db5669 in mainline for uspace/app/devctl/devctl.c
- Timestamp:
- 2013-09-11T12:35:55Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 48bd6f4, 4c9b28a
- Parents:
- cd3b380
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/devctl/devctl.c
rcd3b380 r1db5669 47 47 char drv_name[MAX_NAME_LENGTH]; 48 48 49 static const char *drv_state_str(driver_state_t state) 50 { 51 const char *sstate; 52 53 switch (state) { 54 case DRIVER_NOT_STARTED: 55 sstate = "not started"; 56 break; 57 case DRIVER_STARTING: 58 sstate = "starting"; 59 break; 60 case DRIVER_RUNNING: 61 sstate = "running"; 62 break; 63 default: 64 sstate = "unknown"; 65 } 66 67 return sstate; 68 } 69 49 70 static int fun_subtree_print(devman_handle_t funh, int lvl) 50 71 { … … 161 182 static int drv_list(void) 162 183 { 184 devman_handle_t *devs; 163 185 devman_handle_t *drvs; 164 186 driver_state_t state; 165 187 const char *sstate; 166 188 size_t ndrvs; 189 size_t ndevs; 167 190 size_t i; 168 191 int rc; … … 173 196 174 197 for (i = 0; i < ndrvs; i++) { 198 devs = NULL; 199 175 200 rc = devman_driver_get_name(drvs[i], drv_name, MAX_NAME_LENGTH); 176 201 if (rc != EOK) 177 continue;202 goto skip; 178 203 rc = devman_driver_get_state(drvs[i], &state); 179 204 if (rc != EOK) 180 continue; 181 switch (state) { 182 case DRIVER_NOT_STARTED: 183 sstate = "not started"; 184 break; 185 case DRIVER_STARTING: 186 sstate = "starting"; 187 break; 188 case DRIVER_RUNNING: 189 sstate = "running"; 190 break; 191 default: 192 sstate = "unknown"; 193 } 194 printf("%3d %-10s %s\n", (int)drvs[i], drv_name, sstate); 205 goto skip; 206 rc = devman_driver_get_devices(drvs[i], &devs, &ndevs); 207 if (rc != EOK) 208 goto skip; 209 210 sstate = drv_state_str(state); 211 212 printf("%-11s %3d %s\n", sstate, ndevs, drv_name); 213 skip: 214 free(devs); 195 215 } 196 216 free(drvs); 217 218 return EOK; 219 } 220 221 static int drv_show(char *drvname) 222 { 223 devman_handle_t *devs; 224 devman_handle_t drvh; 225 devman_handle_t funh; 226 driver_state_t state; 227 const char *sstate; 228 size_t ndevs; 229 size_t i; 230 int rc; 231 232 rc = devman_driver_get_handle(drvname, &drvh); 233 if (rc != EOK) 234 return rc; 235 236 devs = NULL; 237 238 rc = devman_driver_get_name(drvh, drv_name, MAX_NAME_LENGTH); 239 if (rc != EOK) 240 return rc; 241 242 rc = devman_driver_get_state(drvh, &state); 243 if (rc != EOK) 244 return rc; 245 246 rc = devman_driver_get_devices(drvh, &devs, &ndevs); 247 if (rc != EOK) 248 return rc; 249 250 sstate = drv_state_str(state); 251 252 printf("Driver: %s\n", drv_name); 253 printf("State: %s\n", sstate); 254 printf("Attached devices:\n"); 255 256 for (i = 0; i < ndevs; i++) { 257 rc = devman_dev_get_parent(devs[i], &funh); 258 if (rc != EOK) 259 goto error; 260 261 rc = devman_fun_get_path(funh, name, MAX_NAME_LENGTH); 262 if (rc != EOK) 263 goto error; 264 printf("\t%s\n", name); 265 } 266 267 error: 268 free(devs); 197 269 198 270 return EOK; … … 226 298 printf("\tdevctl offline <function>]\n"); 227 299 printf("\tdevctl list-drv\n"); 300 printf("\tdevctl show-drv <driver-name>\n"); 228 301 printf("\tdevctl load-drv <driver-name>\n"); 229 302 } … … 263 336 if (rc != EOK) 264 337 return 2; 338 } else if (str_cmp(argv[1], "show-drv") == 0) { 339 if (argc < 3) { 340 printf(NAME ": Argument missing.\n"); 341 print_syntax(); 342 return 1; 343 } 344 345 rc = drv_show(argv[2]); 346 if (rc != EOK) { 347 return 2; 348 } 265 349 } else if (str_cmp(argv[1], "load-drv") == 0) { 266 350 if (argc < 3) {
Note:
See TracChangeset
for help on using the changeset viewer.