git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Modules/IPStack - Moving to reduction of memcpy usage
[tpg/acess2.git]
/
KernelLand
/
Modules
/
USB
/
Core
/
usb.c
diff --git
a/KernelLand/Modules/USB/Core/usb.c
b/KernelLand/Modules/USB/Core/usb.c
index
405a508
..
e20f53c
100644
(file)
--- a/
KernelLand/Modules/USB/Core/usb.c
+++ b/
KernelLand/Modules/USB/Core/usb.c
@@
-21,15
+21,12
@@
extern tUSBDriver gUSBHub_Driver;
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts);
// === GLOBALS ===
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts);
// === GLOBALS ===
+tMutex glUSB_Hosts;
+tUSBHost *gUSB_Hosts = NULL;
+tMutex glUSB_InterfaceDrivers;
tUSBDriver *gpUSB_InterfaceDrivers = &gUSBHub_Driver;
// === CODE ===
tUSBDriver *gpUSB_InterfaceDrivers = &gUSBHub_Driver;
// === CODE ===
-void USB_RegisterDriver(tUSBDriver *Driver)
-{
- Driver->Next = gpUSB_InterfaceDrivers;
- gpUSB_InterfaceDrivers = Driver;
-}
-
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts)
{
tUSBHost *host;
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts)
{
tUSBHost *host;
@@
-57,9
+54,11
@@
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts)
host->RootHub.nPorts = nPorts;
memset(host->RootHub.Devices, 0, sizeof(void*)*nPorts);
host->RootHub.nPorts = nPorts;
memset(host->RootHub.Devices, 0, sizeof(void*)*nPorts);
- // TODO: Lock
+ // Append to list
+ Mutex_Acquire( &glUSB_Hosts );
host->Next = gUSB_Hosts;
gUSB_Hosts = host;
host->Next = gUSB_Hosts;
gUSB_Hosts = host;
+ Mutex_Release( &glUSB_Hosts );
return &host->RootHub;
}
return &host->RootHub;
}
@@
-67,7
+66,12
@@
tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts)
// --- Drivers ---
void USB_RegisterDriver(tUSBDriver *Driver)
{
// --- Drivers ---
void USB_RegisterDriver(tUSBDriver *Driver)
{
- Log_Warning("USB", "TODO: Implement USB_RegisterDriver");
+ Mutex_Acquire( &glUSB_InterfaceDrivers );
+ Driver->Next = gpUSB_InterfaceDrivers;
+ gpUSB_InterfaceDrivers = Driver;
+ Mutex_Release( &glUSB_InterfaceDrivers );
+
+ // TODO: Recheck devices that didn't have a driver
}
tUSBDriver *USB_int_FindDriverByClass(Uint32 ClassCode)
}
tUSBDriver *USB_int_FindDriverByClass(Uint32 ClassCode)
UCC
git Repository :: git.ucc.asn.au