ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ke_i.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         BSD - See COPYING.ARM in the top level directory
00004  * FILE:            ntoskrnl/ke/arm/ke_i.h
00005  * PURPOSE:         Implements macro-generated system call portable wrappers
00006  * PROGRAMMERS:     ReactOS Portable Systems Group
00007  */
00008 
00009 //
00010 // First, cleanup after any previous invocation
00011 //
00012 #undef _1 
00013 #undef _2 
00014 #undef _3 
00015 #undef _4 
00016 #undef _5 
00017 #undef _6 
00018 #undef _7 
00019 #undef _8 
00020 #undef _9 
00021 #undef a 
00022 #undef b 
00023 #undef c 
00024 #undef d 
00025 #undef e
00026 #undef f
00027 #undef _10
00028 #undef _11
00029 #undef SYSCALL
00030 
00031 //
00032 // Are we building the typedef prototypes?
00033 //
00034 #ifdef PROTO
00035     //
00036     // Then, each parameter is actually a prototype argument
00037     //
00038     #define _1 PVOID
00039     #define _2 PVOID
00040     #define _3 PVOID
00041     #define _4 PVOID
00042     #define _5 PVOID
00043     #define _6 PVOID
00044     #define _7 PVOID
00045     #define _8 PVOID
00046     #define _9 PVOID
00047     #define a PVOID
00048     #define b PVOID
00049     #define c PVOID
00050     #define d PVOID
00051     #define e PVOID
00052     #define f PVOID
00053     #define _10 PVOID
00054     #define _11 PVOID
00055 
00056     //
00057     // And we generate the typedef
00058     //
00059     #define SYSCALL(x, y) typedef NTSTATUS (*PKI_SYSCALL_##x##PARAM)y;
00060 
00061     //
00062     // Cleanup for next run
00063     //
00064     #undef PROTO
00065 #else
00066     //
00067     // Each parameter is actually an argument for the system call
00068     //
00069     #define _1 g[0x00]
00070     #define _2 g[0x01]
00071     #define _3 g[0x02]
00072     #define _4 g[0x03]
00073     #define _5 g[0x04]
00074     #define _6 g[0x05]
00075     #define _7 g[0x06]
00076     #define _8 g[0x07]
00077     #define _9 g[0x08]
00078     #define a g[0x09]
00079     #define b g[0x0A]
00080     #define c g[0x0B]
00081     #define d g[0x0C]
00082     #define e g[0x0D]
00083     #define f g[0x0E]
00084     #define _10 g[0x0F]
00085     #define _11 g[0x10]
00086 
00087     //
00088     // And we generate the actual system call
00089     //
00090     #define SYSCALL(x, y)                        \
00091         NTSTATUS                                 \
00092         KiSyscall##x##Param(                     \
00093             IN PVOID p,                          \
00094             IN PVOID *g                          \
00095         )                                        \
00096         {                                        \
00097             return ((PKI_SYSCALL_##x##PARAM)p)y; \
00098         }
00099 
00100     //
00101     // Cleanup for next run
00102     //
00103     #undef FUNC
00104 #endif

Generated on Sun May 27 2012 04:37:31 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.