summaryrefslogtreecommitdiff
path: root/tests/aapits/osunixxf.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/aapits/osunixxf.c')
-rw-r--r--tests/aapits/osunixxf.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/tests/aapits/osunixxf.c b/tests/aapits/osunixxf.c
index f9d26f4b8..e089403a4 100644
--- a/tests/aapits/osunixxf.c
+++ b/tests/aapits/osunixxf.c
@@ -131,6 +131,7 @@
#include "acparser.h"
#include "acdebug.h"
#include "atosxfwrap.h"
+#include "atosxfctrl.h"
#define _COMPONENT ACPI_OS_SERVICES
ACPI_MODULE_NAME ("osunixxf")
@@ -579,8 +580,10 @@ AcpiOsActualCreateSemaphore (
ACPI_HANDLE *OutHandle)
{
+ *OutHandle = (ACPI_HANDLE) malloc ((size_t) sizeof(UINT32));
+ memset(*OutHandle, InitialUnits == 0 ? 0 : 1, sizeof(UINT32));
+ OsxfCtrlAddQueue(*OutHandle);
- *OutHandle = (ACPI_HANDLE) 1;
return (AE_OK);
}
@@ -601,10 +604,11 @@ AcpiOsActualDeleteSemaphore (
ACPI_HANDLE Handle)
{
- if (!Handle)
+ if (!Handle || !OsxfCtrlDelQueue(Handle))
{
return (AE_BAD_PARAMETER);
}
+ free(Handle);
return (AE_OK);
}
@@ -631,6 +635,19 @@ AcpiOsActualWaitSemaphore (
UINT16 Timeout)
{
+ if (!Handle || !OsxfCtrlCheckQueue(Handle))
+ {
+ return (AE_BAD_PARAMETER);
+ }
+
+ while ((*(UINT32 *)Handle == 0))
+ {
+ if ((Timeout != ACPI_WAIT_FOREVER))
+ {
+ return (AE_TIME);
+ }
+ }
+ *(UINT32 *)Handle = 0;
return (AE_OK);
}
@@ -655,6 +672,12 @@ AcpiOsActualSignalSemaphore (
UINT32 Units)
{
+ if (!Handle || !OsxfCtrlCheckQueue(Handle))
+ {
+ return (AE_BAD_PARAMETER);
+ }
+
+ *(UINT32 *)Handle = 1;
return (AE_OK);
}
@@ -668,11 +691,11 @@ AcpiOsActualCreateLock (
return (AcpiOsCreateSemaphore (1, 1, OutHandle));
}
-void
+ACPI_STATUS
AcpiOsActualDeleteLock (
ACPI_HANDLE Handle)
{
- AcpiOsDeleteSemaphore (Handle);
+ return (AcpiOsDeleteSemaphore (Handle));
}
@@ -763,9 +786,8 @@ AcpiOsActualExecute (
ACPI_OSD_EXEC_CALLBACK Function,
void *Context)
{
-
-// _beginthread (Function, (unsigned) 0, Context);
- return (0);
+ pthread_t thread;
+ return (pthread_create(&thread, NULL, (void *) Function, Context));
}
@@ -1120,7 +1142,7 @@ AcpiOsActualWriteMemory (
ACPI_THREAD_ID
AcpiOsActualGetThreadId(void)
{
- return ((ACPI_THREAD_ID) getpid());
+ return ((ACPI_THREAD_ID) pthread_self());
}