167754Smsmith/******************************************************************************
267754Smsmith *
3241973Sjkim * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These
477424Smsmith *                    interfaces must be implemented by OSL to interface the
577424Smsmith *                    ACPI components to the host operating system.
667754Smsmith *
767754Smsmith *****************************************************************************/
867754Smsmith
9217365Sjkim/*
10306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp.
1170243Smsmith * All rights reserved.
1267754Smsmith *
13217365Sjkim * Redistribution and use in source and binary forms, with or without
14217365Sjkim * modification, are permitted provided that the following conditions
15217365Sjkim * are met:
16217365Sjkim * 1. Redistributions of source code must retain the above copyright
17217365Sjkim *    notice, this list of conditions, and the following disclaimer,
18217365Sjkim *    without modification.
19217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
20217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
21217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
22217365Sjkim *    including a substantially similar Disclaimer requirement for further
23217365Sjkim *    binary redistribution.
24217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
25217365Sjkim *    of any contributors may be used to endorse or promote products derived
26217365Sjkim *    from this software without specific prior written permission.
2767754Smsmith *
28217365Sjkim * Alternatively, this software may be distributed under the terms of the
29217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
30217365Sjkim * Software Foundation.
3167754Smsmith *
32217365Sjkim * NO WARRANTY
33217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
36217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
37217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
38217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
39217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
41217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
42217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
44217365Sjkim */
4567754Smsmith
4677424Smsmith#ifndef __ACPIOSXF_H__
4777424Smsmith#define __ACPIOSXF_H__
4867754Smsmith
49193341Sjkim#include <contrib/dev/acpica/include/platform/acenv.h>
50193341Sjkim#include <contrib/dev/acpica/include/actypes.h>
5167754Smsmith
5267754Smsmith
53167802Sjkim/* Types for AcpiOsExecute */
5467754Smsmith
55167802Sjkimtypedef enum
56167802Sjkim{
57167802Sjkim    OSL_GLOBAL_LOCK_HANDLER,
58167802Sjkim    OSL_NOTIFY_HANDLER,
59167802Sjkim    OSL_GPE_HANDLER,
60306536Sjkim    OSL_DEBUGGER_MAIN_THREAD,
61306536Sjkim    OSL_DEBUGGER_EXEC_THREAD,
62167802Sjkim    OSL_EC_POLL_HANDLER,
63167802Sjkim    OSL_EC_BURST_HANDLER
6467754Smsmith
65167802Sjkim} ACPI_EXECUTE_TYPE;
66167802Sjkim
6777424Smsmith#define ACPI_NO_UNIT_LIMIT          ((UINT32) -1)
6877424Smsmith#define ACPI_MUTEX_SEM              1
6967754Smsmith
7067754Smsmith
7180062Smsmith/* Functions for AcpiOsSignal */
7280062Smsmith
7380062Smsmith#define ACPI_SIGNAL_FATAL           0
7480062Smsmith#define ACPI_SIGNAL_BREAKPOINT      1
7580062Smsmith
76114237Snjltypedef struct acpi_signal_fatal_info
7780062Smsmith{
7880062Smsmith    UINT32                  Type;
7980062Smsmith    UINT32                  Code;
8080062Smsmith    UINT32                  Argument;
8180062Smsmith
8280062Smsmith} ACPI_SIGNAL_FATAL_INFO;
8380062Smsmith
8480062Smsmith
8567754Smsmith/*
8677424Smsmith * OSL Initialization and shutdown primitives
8767754Smsmith */
88281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInitialize
8967754SmsmithACPI_STATUS
9067754SmsmithAcpiOsInitialize (
9167754Smsmith    void);
92281075Sdim#endif
9367754Smsmith
94281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTerminate
9567754SmsmithACPI_STATUS
9667754SmsmithAcpiOsTerminate (
9767754Smsmith    void);
98281075Sdim#endif
9967754Smsmith
10099146Siwasaki
10199146Siwasaki/*
10299146Siwasaki * ACPI Table interfaces
10399146Siwasaki */
104281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetRootPointer
105167802SjkimACPI_PHYSICAL_ADDRESS
10680062SmsmithAcpiOsGetRootPointer (
107167802Sjkim    void);
108281075Sdim#endif
10977424Smsmith
110281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPredefinedOverride
11199146SiwasakiACPI_STATUS
112114237SnjlAcpiOsPredefinedOverride (
113114237Snjl    const ACPI_PREDEFINED_NAMES *InitVal,
114114237Snjl    ACPI_STRING                 *NewVal);
115281075Sdim#endif
116114237Snjl
117281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTableOverride
118114237SnjlACPI_STATUS
11999146SiwasakiAcpiOsTableOverride (
12099146Siwasaki    ACPI_TABLE_HEADER       *ExistingTable,
12199146Siwasaki    ACPI_TABLE_HEADER       **NewTable);
122281075Sdim#endif
12380062Smsmith
124281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPhysicalTableOverride
125231844SjkimACPI_STATUS
126231844SjkimAcpiOsPhysicalTableOverride (
127231844Sjkim    ACPI_TABLE_HEADER       *ExistingTable,
128231844Sjkim    ACPI_PHYSICAL_ADDRESS   *NewAddress,
129231844Sjkim    UINT32                  *NewTableLength);
130281075Sdim#endif
13199146Siwasaki
132231844Sjkim
13367754Smsmith/*
134167802Sjkim * Spinlock primitives
13567754Smsmith */
136281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateLock
13767754SmsmithACPI_STATUS
138167802SjkimAcpiOsCreateLock (
139167802Sjkim    ACPI_SPINLOCK           *OutHandle);
140241973Sjkim#endif
141167802Sjkim
142281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteLock
143167802Sjkimvoid
144167802SjkimAcpiOsDeleteLock (
145167802Sjkim    ACPI_SPINLOCK           Handle);
146281075Sdim#endif
147167802Sjkim
148281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireLock
149167802SjkimACPI_CPU_FLAGS
150167802SjkimAcpiOsAcquireLock (
151167802Sjkim    ACPI_SPINLOCK           Handle);
152281075Sdim#endif
153167802Sjkim
154281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseLock
155167802Sjkimvoid
156167802SjkimAcpiOsReleaseLock (
157167802Sjkim    ACPI_SPINLOCK           Handle,
158167802Sjkim    ACPI_CPU_FLAGS          Flags);
159281075Sdim#endif
160167802Sjkim
161167802Sjkim
162167802Sjkim/*
163167802Sjkim * Semaphore primitives
164167802Sjkim */
165281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateSemaphore
166167802SjkimACPI_STATUS
16767754SmsmithAcpiOsCreateSemaphore (
16867754Smsmith    UINT32                  MaxUnits,
16967754Smsmith    UINT32                  InitialUnits,
170167802Sjkim    ACPI_SEMAPHORE          *OutHandle);
171281075Sdim#endif
17267754Smsmith
173281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteSemaphore
17467754SmsmithACPI_STATUS
17567754SmsmithAcpiOsDeleteSemaphore (
176167802Sjkim    ACPI_SEMAPHORE          Handle);
177281075Sdim#endif
17867754Smsmith
179281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitSemaphore
18067754SmsmithACPI_STATUS
18167754SmsmithAcpiOsWaitSemaphore (
182167802Sjkim    ACPI_SEMAPHORE          Handle,
18367754Smsmith    UINT32                  Units,
184107325Siwasaki    UINT16                  Timeout);
185281075Sdim#endif
18667754Smsmith
187281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignalSemaphore
18867754SmsmithACPI_STATUS
18967754SmsmithAcpiOsSignalSemaphore (
190167802Sjkim    ACPI_SEMAPHORE          Handle,
19167754Smsmith    UINT32                  Units);
192281075Sdim#endif
19367754Smsmith
194167802Sjkim
195167802Sjkim/*
196193267Sjkim * Mutex primitives. May be configured to use semaphores instead via
197193267Sjkim * ACPI_MUTEX_TYPE (see platform/acenv.h)
198167802Sjkim */
199193267Sjkim#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
200193267Sjkim
201281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateMutex
202117521SnjlACPI_STATUS
203167802SjkimAcpiOsCreateMutex (
204167802Sjkim    ACPI_MUTEX              *OutHandle);
205281075Sdim#endif
20677424Smsmith
207281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteMutex
208117521Snjlvoid
209167802SjkimAcpiOsDeleteMutex (
210167802Sjkim    ACPI_MUTEX              Handle);
211281075Sdim#endif
212117521Snjl
213281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireMutex
214167802SjkimACPI_STATUS
215167802SjkimAcpiOsAcquireMutex (
216167802Sjkim    ACPI_MUTEX              Handle,
217167802Sjkim    UINT16                  Timeout);
218281075Sdim#endif
219117521Snjl
220281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseMutex
221117521Snjlvoid
222167802SjkimAcpiOsReleaseMutex (
223167802Sjkim    ACPI_MUTEX              Handle);
224193267Sjkim#endif
225117521Snjl
226281075Sdim#endif
227117521Snjl
228281075Sdim
22967754Smsmith/*
23067754Smsmith * Memory allocation and mapping
23167754Smsmith */
232281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocate
23367754Smsmithvoid *
23467754SmsmithAcpiOsAllocate (
23591116Smsmith    ACPI_SIZE               Size);
236281075Sdim#endif
23767754Smsmith
238281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocateZeroed
239281075Sdimvoid *
240281075SdimAcpiOsAllocateZeroed (
241281075Sdim    ACPI_SIZE               Size);
242281075Sdim#endif
243281075Sdim
244281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsFree
24567754Smsmithvoid
24667754SmsmithAcpiOsFree (
24767754Smsmith    void *                  Memory);
248281075Sdim#endif
24967754Smsmith
250281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsMapMemory
251167802Sjkimvoid *
25267754SmsmithAcpiOsMapMemory (
253167802Sjkim    ACPI_PHYSICAL_ADDRESS   Where,
254193267Sjkim    ACPI_SIZE               Length);
255281075Sdim#endif
25667754Smsmith
257281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsUnmapMemory
25867754Smsmithvoid
25967754SmsmithAcpiOsUnmapMemory (
26067754Smsmith    void                    *LogicalAddress,
26191116Smsmith    ACPI_SIZE               Size);
262281075Sdim#endif
26367754Smsmith
264281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetPhysicalAddress
26571867SmsmithACPI_STATUS
26671867SmsmithAcpiOsGetPhysicalAddress (
26771867Smsmith    void                    *LogicalAddress,
26871867Smsmith    ACPI_PHYSICAL_ADDRESS   *PhysicalAddress);
269281075Sdim#endif
27067754Smsmith
27177424Smsmith
27267754Smsmith/*
273151937Sjkim * Memory/Object Cache
27467754Smsmith */
275281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateCache
276151937SjkimACPI_STATUS
277151937SjkimAcpiOsCreateCache (
278151937Sjkim    char                    *CacheName,
279151937Sjkim    UINT16                  ObjectSize,
280151937Sjkim    UINT16                  MaxDepth,
281151937Sjkim    ACPI_CACHE_T            **ReturnCache);
282281075Sdim#endif
28367754Smsmith
284281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteCache
28567754SmsmithACPI_STATUS
286151937SjkimAcpiOsDeleteCache (
287151937Sjkim    ACPI_CACHE_T            *Cache);
288281075Sdim#endif
289151937Sjkim
290281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPurgeCache
291151937SjkimACPI_STATUS
292151937SjkimAcpiOsPurgeCache (
293151937Sjkim    ACPI_CACHE_T            *Cache);
294281075Sdim#endif
295151937Sjkim
296281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireObject
297151937Sjkimvoid *
298151937SjkimAcpiOsAcquireObject (
299151937Sjkim    ACPI_CACHE_T            *Cache);
300281075Sdim#endif
301151937Sjkim
302281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseObject
303151937SjkimACPI_STATUS
304151937SjkimAcpiOsReleaseObject (
305151937Sjkim    ACPI_CACHE_T            *Cache,
306151937Sjkim    void                    *Object);
307281075Sdim#endif
308151937Sjkim
309151937Sjkim
310151937Sjkim/*
311151937Sjkim * Interrupt handlers
312151937Sjkim */
313281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInstallInterruptHandler
314151937SjkimACPI_STATUS
31567754SmsmithAcpiOsInstallInterruptHandler (
31667754Smsmith    UINT32                  InterruptNumber,
317138287Smarks    ACPI_OSD_HANDLER        ServiceRoutine,
31867754Smsmith    void                    *Context);
319281075Sdim#endif
32067754Smsmith
321281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRemoveInterruptHandler
32267754SmsmithACPI_STATUS
32367754SmsmithAcpiOsRemoveInterruptHandler (
32467754Smsmith    UINT32                  InterruptNumber,
325138287Smarks    ACPI_OSD_HANDLER        ServiceRoutine);
326281075Sdim#endif
32767754Smsmith
32867754Smsmith
32967754Smsmith/*
33077424Smsmith * Threads and Scheduling
33167754Smsmith */
332281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetThreadId
333167802SjkimACPI_THREAD_ID
33477424SmsmithAcpiOsGetThreadId (
33577424Smsmith    void);
336281075Sdim#endif
33777424Smsmith
338281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsExecute
33967754SmsmithACPI_STATUS
340167802SjkimAcpiOsExecute (
341167802Sjkim    ACPI_EXECUTE_TYPE       Type,
342138287Smarks    ACPI_OSD_EXEC_CALLBACK  Function,
34367754Smsmith    void                    *Context);
344281075Sdim#endif
34567754Smsmith
346281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitEventsComplete
34767754Smsmithvoid
348138287SmarksAcpiOsWaitEventsComplete (
349235945Sjkim    void);
350281075Sdim#endif
351138287Smarks
352281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSleep
353138287Smarksvoid
35467754SmsmithAcpiOsSleep (
355202771Sjkim    UINT64                  Milliseconds);
356281075Sdim#endif
35767754Smsmith
358281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsStall
35967754Smsmithvoid
36080062SmsmithAcpiOsStall (
36167754Smsmith    UINT32                  Microseconds);
362281075Sdim#endif
36367754Smsmith
36477424Smsmith
36567754Smsmith/*
36680062Smsmith * Platform and hardware-independent I/O interfaces
36767754Smsmith */
368281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPort
36980062SmsmithACPI_STATUS
37080062SmsmithAcpiOsReadPort (
37180062Smsmith    ACPI_IO_ADDRESS         Address,
372117521Snjl    UINT32                  *Value,
37380062Smsmith    UINT32                  Width);
374281075Sdim#endif
37567754Smsmith
376281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePort
37780062SmsmithACPI_STATUS
37880062SmsmithAcpiOsWritePort (
37980062Smsmith    ACPI_IO_ADDRESS         Address,
380117521Snjl    UINT32                  Value,
38180062Smsmith    UINT32                  Width);
382281075Sdim#endif
38367754Smsmith
38467754Smsmith
38567754Smsmith/*
38680062Smsmith * Platform and hardware-independent physical memory interfaces
38767754Smsmith */
388281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadMemory
38980062SmsmithACPI_STATUS
39080062SmsmithAcpiOsReadMemory (
39180062Smsmith    ACPI_PHYSICAL_ADDRESS   Address,
392231844Sjkim    UINT64                  *Value,
39380062Smsmith    UINT32                  Width);
394281075Sdim#endif
39567754Smsmith
396281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteMemory
39780062SmsmithACPI_STATUS
39880062SmsmithAcpiOsWriteMemory (
39980062Smsmith    ACPI_PHYSICAL_ADDRESS   Address,
400231844Sjkim    UINT64                  Value,
40180062Smsmith    UINT32                  Width);
402281075Sdim#endif
40367754Smsmith
40467754Smsmith
40567754Smsmith/*
40680062Smsmith * Platform and hardware-independent PCI configuration space access
407138287Smarks * Note: Can't use "Register" as a parameter, changed to "Reg" --
408138287Smarks * certain compilers complain.
40967754Smsmith */
410281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPciConfiguration
41167754SmsmithACPI_STATUS
41280062SmsmithAcpiOsReadPciConfiguration (
41380062Smsmith    ACPI_PCI_ID             *PciId,
414138287Smarks    UINT32                  Reg,
415210976Sjkim    UINT64                  *Value,
41680062Smsmith    UINT32                  Width);
417281075Sdim#endif
41867754Smsmith
419281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePciConfiguration
42067754SmsmithACPI_STATUS
42180062SmsmithAcpiOsWritePciConfiguration (
42280062Smsmith    ACPI_PCI_ID             *PciId,
423138287Smarks    UINT32                  Reg,
424202771Sjkim    UINT64                  Value,
42580062Smsmith    UINT32                  Width);
426281075Sdim#endif
42767754Smsmith
428167802Sjkim
429114237Snjl/*
43067754Smsmith * Miscellaneous
43167754Smsmith */
432281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadable
43367754SmsmithBOOLEAN
43467754SmsmithAcpiOsReadable (
43567754Smsmith    void                    *Pointer,
436117521Snjl    ACPI_SIZE               Length);
437281075Sdim#endif
43867754Smsmith
439281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritable
44067754SmsmithBOOLEAN
44167754SmsmithAcpiOsWritable (
44267754Smsmith    void                    *Pointer,
443117521Snjl    ACPI_SIZE               Length);
444281075Sdim#endif
44567754Smsmith
446281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTimer
447138287SmarksUINT64
44878986SmsmithAcpiOsGetTimer (
44978986Smsmith    void);
450281075Sdim#endif
45167754Smsmith
452281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignal
45380062SmsmithACPI_STATUS
45480062SmsmithAcpiOsSignal (
45580062Smsmith    UINT32                  Function,
45680062Smsmith    void                    *Info);
457281075Sdim#endif
45878986Smsmith
459167802Sjkim
46067754Smsmith/*
46167754Smsmith * Debug print routines
46267754Smsmith */
463281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
46492388Smsmithvoid ACPI_INTERNAL_VAR_XFACE
46567754SmsmithAcpiOsPrintf (
466114237Snjl    const char              *Format,
46767754Smsmith    ...);
468281075Sdim#endif
46967754Smsmith
470281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsVprintf
47191116Smsmithvoid
47267754SmsmithAcpiOsVprintf (
473114237Snjl    const char              *Format,
47467754Smsmith    va_list                 Args);
475281075Sdim#endif
47667754Smsmith
477281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRedirectOutput
478100966Siwasakivoid
479100966SiwasakiAcpiOsRedirectOutput (
480100966Siwasaki    void                    *Destination);
481281075Sdim#endif
48277424Smsmith
483100966Siwasaki
48467754Smsmith/*
48567754Smsmith * Debug input
48667754Smsmith */
487281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetLine
488222544SjkimACPI_STATUS
48967754SmsmithAcpiOsGetLine (
490222544Sjkim    char                    *Buffer,
491222544Sjkim    UINT32                  BufferLength,
492222544Sjkim    UINT32                  *BytesRead);
493281075Sdim#endif
49467754Smsmith
49567754Smsmith
49667754Smsmith/*
497250838Sjkim * Obtain ACPI table(s)
498250838Sjkim */
499281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByName
500250838SjkimACPI_STATUS
501250838SjkimAcpiOsGetTableByName (
502250838Sjkim    char                    *Signature,
503250838Sjkim    UINT32                  Instance,
504250838Sjkim    ACPI_TABLE_HEADER       **Table,
505250838Sjkim    ACPI_PHYSICAL_ADDRESS   *Address);
506281075Sdim#endif
507250838Sjkim
508281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByIndex
509250838SjkimACPI_STATUS
510250838SjkimAcpiOsGetTableByIndex (
511250838Sjkim    UINT32                  Index,
512250838Sjkim    ACPI_TABLE_HEADER       **Table,
513254745Sjkim    UINT32                  *Instance,
514250838Sjkim    ACPI_PHYSICAL_ADDRESS   *Address);
515281075Sdim#endif
516250838Sjkim
517281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByAddress
518250838SjkimACPI_STATUS
519250838SjkimAcpiOsGetTableByAddress (
520250838Sjkim    ACPI_PHYSICAL_ADDRESS   Address,
521250838Sjkim    ACPI_TABLE_HEADER       **Table);
522281075Sdim#endif
523250838Sjkim
524250838Sjkim
525250838Sjkim/*
526114237Snjl * Directory manipulation
527114237Snjl */
528281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenDirectory
529114237Snjlvoid *
530114237SnjlAcpiOsOpenDirectory (
531114237Snjl    char                    *Pathname,
532114237Snjl    char                    *WildcardSpec,
533114237Snjl    char                    RequestedFileType);
534281075Sdim#endif
535114237Snjl
536114237Snjl/* RequesteFileType values */
537114237Snjl
538114237Snjl#define REQUEST_FILE_ONLY                   0
539114237Snjl#define REQUEST_DIR_ONLY                    1
540114237Snjl
541114237Snjl
542281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetNextFilename
543114237Snjlchar *
544114237SnjlAcpiOsGetNextFilename (
545114237Snjl    void                    *DirHandle);
546281075Sdim#endif
547114237Snjl
548281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseDirectory
549114237Snjlvoid
550114237SnjlAcpiOsCloseDirectory (
551114237Snjl    void                    *DirHandle);
552281075Sdim#endif
553114237Snjl
55467754Smsmith
555281075Sdim/*
556281075Sdim * File I/O and related support
557281075Sdim */
558281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenFile
559281075SdimACPI_FILE
560281075SdimAcpiOsOpenFile (
561281075Sdim    const char              *Path,
562281075Sdim    UINT8                   Modes);
563281075Sdim#endif
564281075Sdim
565281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseFile
566281075Sdimvoid
567281075SdimAcpiOsCloseFile (
568281075Sdim    ACPI_FILE               File);
569281075Sdim#endif
570281075Sdim
571281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadFile
572281075Sdimint
573281075SdimAcpiOsReadFile (
574281075Sdim    ACPI_FILE               File,
575281075Sdim    void                    *Buffer,
576281075Sdim    ACPI_SIZE               Size,
577281075Sdim    ACPI_SIZE               Count);
578281075Sdim#endif
579281075Sdim
580281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteFile
581281075Sdimint
582281075SdimAcpiOsWriteFile (
583281075Sdim    ACPI_FILE               File,
584281075Sdim    void                    *Buffer,
585281075Sdim    ACPI_SIZE               Size,
586281075Sdim    ACPI_SIZE               Count);
587281075Sdim#endif
588281075Sdim
589281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetFileOffset
590281075Sdimlong
591281075SdimAcpiOsGetFileOffset (
592281075Sdim    ACPI_FILE               File);
593281075Sdim#endif
594281075Sdim
595281075Sdim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSetFileOffset
596281075SdimACPI_STATUS
597281075SdimAcpiOsSetFileOffset (
598281075Sdim    ACPI_FILE               File,
599281075Sdim    long                    Offset,
600281075Sdim    UINT8                   From);
601281075Sdim#endif
602281075Sdim
603306536Sjkim#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTracePoint
604306536Sjkimvoid
605306536SjkimAcpiOsTracePoint (
606306536Sjkim    ACPI_TRACE_EVENT_TYPE   Type,
607306536Sjkim    BOOLEAN                 Begin,
608306536Sjkim    UINT8                   *Aml,
609306536Sjkim    char                    *Pathname);
610306536Sjkim#endif
611281075Sdim
612306536Sjkim
61377424Smsmith#endif /* __ACPIOSXF_H__ */
614