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
Kernel/x86 - Report ACPICA cache name on exhaustion
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
arch
/
x86
/
acpica.c
diff --git
a/KernelLand/Kernel/arch/x86/acpica.c
b/KernelLand/Kernel/arch/x86/acpica.c
index
7bbe1cd
..
a7a0883
100644
(file)
--- a/
KernelLand/Kernel/arch/x86/acpica.c
+++ b/
KernelLand/Kernel/arch/x86/acpica.c
@@
-5,8
+5,8
@@
* acpica.c
* - ACPICA Interface
*/
* acpica.c
* - ACPICA Interface
*/
-#define ACPI_DEBUG_OUTPUT
1
-#define DEBUG
1
+#define ACPI_DEBUG_OUTPUT
0
+#define DEBUG
0
#define _AcpiModuleName "Shim"
#define _COMPONENT "Acess"
#include <acpi.h>
#define _AcpiModuleName "Shim"
#define _COMPONENT "Acess"
#include <acpi.h>
@@
-94,7
+94,7
@@
ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer(void)
if( ACPI_FAILURE(rv) )
return 0;
if( ACPI_FAILURE(rv) )
return 0;
- LOG("val=%x", val);
+ LOG("val=
0x
%x", val);
return val;
// (Or use EFI)
return val;
// (Or use EFI)
@@
-137,7
+137,10
@@
ACPI_STATUS AcpiOsCreateCache(char *CacheName, UINT16 ObjectSize, UINT16 MaxDept
namelen = (namelen + 3) & ~3;
ret = malloc(sizeof(*ret) + MaxDepth*sizeof(char) + namelen + MaxDepth*ObjectSize);
namelen = (namelen + 3) & ~3;
ret = malloc(sizeof(*ret) + MaxDepth*sizeof(char) + namelen + MaxDepth*ObjectSize);
- if( !ret ) return AE_NO_MEMORY;
+ if( !ret ) {
+ Log_Notice("ACPICA", "%s: malloc() fail", __func__);
+ return AE_NO_MEMORY;
+ }
ret->nObj = MaxDepth;
ret->ObjectSize = ObjectSize;
ret->nObj = MaxDepth;
ret->ObjectSize = ObjectSize;
@@
-149,7
+152,7
@@
ACPI_STATUS AcpiOsCreateCache(char *CacheName, UINT16 ObjectSize, UINT16 MaxDept
ret->Name[0] = 0;
memset(ret->ObjectStates, 0, sizeof(char)*MaxDepth);
ret->Name[0] = 0;
memset(ret->ObjectStates, 0, sizeof(char)*MaxDepth);
- LOG("Allocated cache
'%s' (%i x 0x%x)"
, CacheName, MaxDepth, ObjectSize);
+ LOG("Allocated cache
%p '%s' (%i x 0x%x)", ret
, CacheName, MaxDepth, ObjectSize);
*ReturnCache = ret;
*ReturnCache = ret;
@@
-183,11
+186,14
@@
void *AcpiOsAcquireObject(ACPI_CACHE_T *Cache)
if( !Cache->ObjectStates[i] ) {
Cache->ObjectStates[i] = 1;
void *rv = (char*)Cache->First + i*Cache->ObjectSize;
if( !Cache->ObjectStates[i] ) {
Cache->ObjectStates[i] = 1;
void *rv = (char*)Cache->First + i*Cache->ObjectSize;
+ memset(rv, 0, Cache->ObjectSize);
LEAVE('p', rv);
return rv;
}
}
LEAVE('p', rv);
return rv;
}
}
-
+
+ Log_Debug("ACPICA", "AcpiOsAcquireObject: %i objects used in cache '%s'", Cache->nObj, Cache->Name);
+
LEAVE('n');
return NULL;
}
LEAVE('n');
return NULL;
}
@@
-199,9
+205,9
@@
ACPI_STATUS AcpiOsReleaseObject(ACPI_CACHE_T *Cache, void *Object)
tVAddr delta = (tVAddr)Object - (tVAddr)Cache->First;
delta /= Cache->ObjectSize;
tVAddr delta = (tVAddr)Object - (tVAddr)Cache->First;
delta /= Cache->ObjectSize;
- LOG("
delta = %i, (limit %i)"
, delta, Cache->nObj);
+ LOG("
Cache=%p, delta = %i, (limit %i)", Cache
, delta, Cache->nObj);
- if( delta > Cache->nObj )
+ if( delta >
=
Cache->nObj )
return AE_BAD_PARAMETER;
Cache->ObjectStates[delta] = 0;
return AE_BAD_PARAMETER;
Cache->ObjectStates[delta] = 0;
@@
-216,8
+222,13
@@
void *AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length)
Uint ofs = PhysicalAddress & (PAGE_SIZE-1);
int npages = (ofs + Length + (PAGE_SIZE-1)) / PAGE_SIZE;
Uint ofs = PhysicalAddress & (PAGE_SIZE-1);
int npages = (ofs + Length + (PAGE_SIZE-1)) / PAGE_SIZE;
- void *rv = ((char*)MM_MapHWPages(PhysicalAddress, npages)) + ofs;
+ char *maploc = (void*)MM_MapHWPages(PhysicalAddress, npages);
+ if(!maploc) {
+ LOG("Mapping %P+0x%x failed", PhysicalAddress, Length);
+ return NULL;
+ }
// MM_DumpTables(0, -1);
// MM_DumpTables(0, -1);
+ void *rv = maploc + ofs;
LOG("Map (%P+%i pg) to %p", PhysicalAddress, npages, rv);
return rv;
}
LOG("Map (%P+%i pg) to %p", PhysicalAddress, npages, rv);
return rv;
}
@@
-309,8
+320,10
@@
ACPI_STATUS AcpiOsCreateMutex(ACPI_MUTEX *OutHandle)
if( !OutHandle )
return AE_BAD_PARAMETER;
tMutex *ret = calloc( sizeof(tMutex), 1 );
if( !OutHandle )
return AE_BAD_PARAMETER;
tMutex *ret = calloc( sizeof(tMutex), 1 );
- if( !ret )
+ if( !ret ) {
+ Log_Notice("ACPICA", "%s: malloc() fail", __func__);
return AE_NO_MEMORY;
return AE_NO_MEMORY;
+ }
ret->Name = "AcpiOsCreateMutex";
*OutHandle = ret;
ret->Name = "AcpiOsCreateMutex";
*OutHandle = ret;
@@
-344,8
+357,10
@@
ACPI_STATUS AcpiOsCreateSemaphore(UINT32 MaxUnits, UINT32 InitialUnits, ACPI_SEM
if( !OutHandle )
return AE_BAD_PARAMETER;
tSemaphore *ret = calloc( sizeof(tSemaphore), 1 );
if( !OutHandle )
return AE_BAD_PARAMETER;
tSemaphore *ret = calloc( sizeof(tSemaphore), 1 );
- if( !ret )
+ if( !ret ) {
+ Log_Notice("ACPICA", "%s: malloc() fail", __func__);
return AE_NO_MEMORY;
return AE_NO_MEMORY;
+ }
Semaphore_Init(ret, InitialUnits, MaxUnits, "AcpiOsCreateSemaphore", "");
*OutHandle = ret;
Semaphore_Init(ret, InitialUnits, MaxUnits, "AcpiOsCreateSemaphore", "");
*OutHandle = ret;
UCC
git Repository :: git.ucc.asn.au