Changes in uspace/drv/root/root.c [5291411:6f9e7fea] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/root/root.c
r5291411 r6f9e7fea 1 1 /* 2 2 * Copyright (c) 2010 Lenka Trochtova 3 * Copyright (c) 2010 Vojtech Horky 3 4 * All rights reserved. 4 5 * … … 52 53 #define NAME "root" 53 54 55 #define PLATFORM_DEVICE_NAME "hw" 56 #define PLATFORM_DEVICE_MATCH_ID STRING(UARCH) 57 #define PLATFORM_DEVICE_MATCH_SCORE 100 58 59 #define VIRTUAL_DEVICE_NAME "virt" 60 #define VIRTUAL_DEVICE_MATCH_ID "rootvirt" 61 #define VIRTUAL_DEVICE_MATCH_SCORE 100 62 54 63 static int root_add_device(device_t *dev); 55 64 … … 65 74 }; 66 75 76 /** Create the device which represents the root of virtual device tree. 77 * 78 * @param parent Parent of the newly created device. 79 * @return Error code. 80 */ 81 static int add_virtual_root_child(device_t *parent) 82 { 83 printf(NAME ": adding new child for virtual devices.\n"); 84 printf(NAME ": device node is `%s' (%d %s)\n", VIRTUAL_DEVICE_NAME, 85 VIRTUAL_DEVICE_MATCH_SCORE, VIRTUAL_DEVICE_MATCH_ID); 86 87 int res = child_device_register_wrapper(parent, VIRTUAL_DEVICE_NAME, 88 VIRTUAL_DEVICE_MATCH_ID, VIRTUAL_DEVICE_MATCH_SCORE); 89 90 return res; 91 } 92 67 93 /** Create the device which represents the root of HW device tree. 68 94 * … … 73 99 { 74 100 printf(NAME ": adding new child for platform device.\n"); 101 printf(NAME ": device node is `%s' (%d %s)\n", PLATFORM_DEVICE_NAME, 102 PLATFORM_DEVICE_MATCH_SCORE, PLATFORM_DEVICE_MATCH_ID); 75 103 76 int res = EOK; 77 device_t *platform = NULL; 78 match_id_t *match_id = NULL; 79 80 /* Create new device. */ 81 platform = create_device(); 82 if (NULL == platform) { 83 res = ENOMEM; 84 goto failure; 85 } 86 87 platform->name = "hw"; 88 printf(NAME ": the new device's name is %s.\n", platform->name); 89 90 /* Initialize match id list. */ 91 match_id = create_match_id(); 92 if (NULL == match_id) { 93 res = ENOMEM; 94 goto failure; 95 } 96 97 /* TODO - replace this with some better solution (sysinfo ?) */ 98 match_id->id = STRING(UARCH); 99 match_id->score = 100; 100 add_match_id(&platform->match_ids, match_id); 101 102 /* Register child device. */ 103 res = child_device_register(platform, parent); 104 if (EOK != res) 105 goto failure; 106 107 return res; 108 109 failure: 110 if (NULL != match_id) 111 match_id->id = NULL; 112 113 if (NULL != platform) { 114 platform->name = NULL; 115 delete_device(platform); 116 } 117 104 int res = child_device_register_wrapper(parent, PLATFORM_DEVICE_NAME, 105 PLATFORM_DEVICE_MATCH_ID, PLATFORM_DEVICE_MATCH_SCORE); 106 118 107 return res; 119 108 } … … 128 117 printf(NAME ": root_add_device, device handle = %d\n", dev->handle); 129 118 119 /* 120 * Register virtual devices root. 121 * We ignore error occurrence because virtual devices shall not be 122 * vital for the system. 123 */ 124 add_virtual_root_child(dev); 125 130 126 /* Register root device's children. */ 131 127 int res = add_platform_child(dev);
Note:
See TracChangeset
for help on using the changeset viewer.