X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Fkernel%2Fdriver.c;fp=kitten%2Fkernel%2Fdriver.c;h=a1c53e8d643ca0654fc409b0b8b7918bd6f655b4;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios.git diff --git a/kitten/kernel/driver.c b/kitten/kernel/driver.c new file mode 100644 index 0000000..a1c53e8 --- /dev/null +++ b/kitten/kernel/driver.c @@ -0,0 +1,27 @@ +#include +#include + +/** + * Searches for the specified driver name and calls its init() function. + * + * Returns 0 on success, -1 on failure. + */ +int driver_init_by_name(const char *name) +{ + unsigned int i; + struct driver_info * drvs = __start___driver_table; + unsigned int num_drvs = __stop___driver_table + - __start___driver_table; + + for (i = 0; i < num_drvs; i++) { + if (strcmp(name, drvs[i].name) == 0) { + if (drvs[i].init_called) + return -1; + drvs[i].init_called = 1; + drvs[i].init(); + return 0; + } + } + return -1; +} +