diff --git a/src/kernel/core/addons/bus_managers/Jamfile b/src/kernel/core/addons/bus_managers/Jamfile index 740b6f6820..e7d4d62370 100644 --- a/src/kernel/core/addons/bus_managers/Jamfile +++ b/src/kernel/core/addons/bus_managers/Jamfile @@ -1,5 +1,21 @@ SubDir OBOS_TOP src kernel core addons bus_managers ; +KernelObjects config_manager.c : -fno-pic -D_KERNEL_MODE ; + +KernelLd + config_manager + : + <$(SOURCE_GRIST)>config_manager.o + kernel.so + : + $(OBOS_TOP)/src/kernel/core/addons/ldscripts/$(OBOS_ARCH)/addon.ld + : + -Bdynamic -shared + : + : + addons/kernel/bus_managers/config_manager + ; + KernelStaticLibrary libbus : <$(SOURCE_GRIST)>bus_init.c <$(SOURCE_GRIST)>bus_man.c diff --git a/src/kernel/core/addons/bus_managers/config_manager.c b/src/kernel/core/addons/bus_managers/config_manager.c new file mode 100644 index 0000000000..e340ecc4c0 --- /dev/null +++ b/src/kernel/core/addons/bus_managers/config_manager.c @@ -0,0 +1,96 @@ +/* config_manager.c + * + * Module that provides access to driver modules and busses + */ + +#include +#include +#include +#include +#include +#include + +#define B_CONFIG_MANAGER_FOR_BUS_MODULE_NAME "bus_managers/config_manager/driver/v1" + +static status_t get_next_device_info(bus_type bus, uint64 *cookie, + struct device_info *info, uint32 len) +{ + dprintf("get_next_device_info(bus = %d, cookie = %lld)\n", + bus, *cookie); +} + +/* device_modules */ +static int cfdm_std_ops(int32 op, ...) +{ + switch(op) { + case B_MODULE_INIT: + dprintf( "config_manager: device modules: init\n" ); + break; + case B_MODULE_UNINIT: + dprintf( "config_manager: device modules: uninit\n" ); + break; + default: + return EINVAL; + } + return B_OK; +} + +/* bus_modules */ +static int cfbm_std_ops(int32 op, ...) +{ + switch(op) { + case B_MODULE_INIT: + dprintf( "config_manager: bus modules: init\n" ); + break; + case B_MODULE_UNINIT: + dprintf( "config_manager: bus modules: uninit\n" ); + break; + default: + return EINVAL; + } + return B_OK; +} + +/* cfdm = configuration_manager_device_modules */ +struct config_manager_for_driver_module_info cfdm = { + { + B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME, + 0, + cfdm_std_ops + }, + + NULL, /* get_next_device_info */ + NULL, /* get_device_info_for */ + NULL, /* get_size_of_current_configuration_for */ + NULL, /* get_current_configuration_for */ + NULL, /* get_size_of_possible_configurations */ + NULL, /* get_possible_configurations_for */ + + NULL, /* count_resource_descriptors_of_type */ + NULL, /* get_nth_resource_descriptor_of_type */ +}; + +/* cfbm = configuration_manager_bus_modules */ +struct config_manager_for_driver_module_info cfbm = { + { + B_CONFIG_MANAGER_FOR_BUS_MODULE_NAME, + 0, + cfbm_std_ops + }, + + NULL, /* get_next_device_info */ + NULL, /* get_device_info_for */ + NULL, /* get_size_of_current_configuration_for */ + NULL, /* get_current_configuration_for */ + NULL, /* get_size_of_possible_configurations */ + NULL, /* get_possible_configurations_for */ + + NULL, /* count_resource_descriptors_of_type */ + NULL, /* get_nth_resource_descriptor_of_type */ +}; + +module_info *modules[] = { + (module_info*)&cfdm, + (module_info*)&cfbm, + NULL +}; \ No newline at end of file diff --git a/src/kernel/core/addons/bus_managers/isa/isa.c b/src/kernel/core/addons/bus_managers/isa/isa.c index 284815ac26..3daf53c9ba 100755 --- a/src/kernel/core/addons/bus_managers/isa/isa.c +++ b/src/kernel/core/addons/bus_managers/isa/isa.c @@ -5,28 +5,16 @@ #include #include -#include +#include #include #include -static int isa_init( void ) -{ - dprintf( "ISA: init\n" ); - return B_NO_ERROR; -} - static status_t isa_rescan(void) { dprintf("isa_rescan()\n"); return 0; } -static int isa_uninit( void ) -{ - dprintf( "ISA: uninit\n" ); - return B_NO_ERROR; -} - static uint8 isa_read_io_8(int mapped_io_addr) { return in8( mapped_io_addr ); @@ -96,21 +84,21 @@ static int std_ops(int32 op, ...) { switch(op) { case B_MODULE_INIT: - isa_init(); + dprintf( "ISA: init\n" ); break; case B_MODULE_UNINIT: - isa_uninit(); + dprintf( "ISA: uninit\n" ); break; default: return EINVAL; } - return 0; + return B_OK; } -static isa_bus_manager isa_module = { +static isa_module_info isa_module = { { { - ISA_MODULE_NAME, + B_ISA_MODULE_NAME, B_KEEP_LOADED, std_ops }, diff --git a/src/kernel/core/addons/bus_managers/pci/pci.c b/src/kernel/core/addons/bus_managers/pci/pci.c index 6acf7bc707..de15d102ab 100755 --- a/src/kernel/core/addons/bus_managers/pci/pci.c +++ b/src/kernel/core/addons/bus_managers/pci/pci.c @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -54,13 +55,6 @@ static int pci_freecookie(void * cookie) return 0; } -/* -static int pci_seek(void * cookie, off_t pos, seek_type st) -{ - return EPERM; -} -*/ - static int pci_close(void * cookie) { return 0; @@ -112,8 +106,8 @@ device_hooks pci_hooks = { &pci_write, NULL, /* select */ NULL, /* deselect */ -// NULL, /* readv */ -// NULL /* writev */ + NULL, /* readv */ + NULL /* writev */ }; static int pci_create_config_structs() @@ -191,3 +185,39 @@ int pci_bus_init(kernel_args *ka) return 0; } +static int std_ops(int32 op, ...) +{ + switch(op) { + case B_MODULE_INIT: + dprintf( "PCI: init\n" ); + break; + case B_MODULE_UNINIT: + dprintf( "PCI: uninit\n" ); + break; + default: + return EINVAL; + } + return B_OK; +} + +struct pci_module_info pci_module = { + { + { + B_PCI_MODULE_NAME, + B_KEEP_LOADED, + std_ops + }, +NULL// &pci_rescan + }, + +NULL,// &read_io_8, +NULL,// &write_io_8, +NULL,// &read_io_16, +NULL,// &write_io_16, +NULL,// &read_io_32, +NULL,// &write_io_32, +NULL,// &get_nth_pci_info, +NULL,// &read_pci_config, +NULL,// &write_pci_config, +NULL,// &ram_address +};