10#if !defined(UNIX) && defined(LINUX)
180#if defined(WINNT) || defined(WIN32)
181 #if defined(_WIN64) && !defined(KERNEL_64BIT)
184 typedef unsigned long ULONG;
185 typedef unsigned short USHORT;
186 typedef unsigned char UCHAR;
191 typedef DWORD *PDWORD;
192 typedef unsigned char *PBYTE;
196 typedef PVOID HANDLE;
198 typedef unsigned __int64
UINT64;
208#if defined(WINNT) || defined(WIN32)
209 #define OS_needs_copy_from_user(fKernelMode) FALSE
210 #define COPY_FROM_USER(dst,src,n) memcpy(dst,src,n)
211 #define COPY_TO_USER(dst,src,n) memcpy(dst,src,n)
213 #define OS_needs_copy_from_user(fKernelMode) (!fKernelMode)
214 #define COPY_FROM_USER(dst,src,n) LINUX_copy_from_user(dst,src,n)
215 #define COPY_TO_USER(dst,src,n) LINUX_copy_to_user(dst,src,n)
240#define COPY_FROM_USER_OR_KERNEL(dst, src, n, fKernelMode) \
242 if (OS_needs_copy_from_user(fKernelMode)) \
243 COPY_FROM_USER(dst, src, n); \
245 memcpy(dst, src, n); \
252#define COPY_TO_USER_OR_KERNEL(dst, src, n, fKernelMode) \
254 if (OS_needs_copy_from_user(fKernelMode)) \
255 COPY_TO_USER(dst, src, n); \
257 memcpy(dst, src, n); \
272int __cdecl
KDBG(DWORD dwLevel, DWORD dwSection,
const char *format, ...);
275 #if defined(KERNEL_64BIT)
278 #define _INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1))
280 typedef char * va_list;
281 #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
282 #define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
283 #define va_end(ap) ( ap = (va_list)0 )
287 int __cdecl _snprintf(
char *buffer,
unsigned long Limit,
const char *format,
289 int __cdecl _vsnprintf(
char *buffer,
unsigned long Limit,
const char
290 *format, va_list Next);
293char* __cdecl
strcpy(
char *s1,
const char *s2);
298 #include <linux_wrappers.h>
299 #define memset LINUX_memset
300 #define strncmp LINUX_strncmp
301 #define strcpy LINUX_strcpy
302 #define strcmp LINUX_strcmp
303 #define strncpy LINUX_strncpy
304 #define strcat LINUX_strcat
305 #define strncat LINUX_strncat
306 #define strlen LINUX_strlen
307 #define memcpy LINUX_memcpy
308 #define memcmp LINUX_memcmp
309 #define sprintf LINUX_sprintf
310 #define vsprintf LINUX_vsprintf
311 #define snprintf LINUX_snprintf
312 #define vsnprintf LINUX_vsnprintf
315 #if defined(KERNEL_64BIT)
316 typedef unsigned __int64 size_t;
318 typedef unsigned int size_t;
321 void* __cdecl memcpy(
void *dest,
const void *src,
size_t count);
322 void* __cdecl memset(
void *dest,
int c,
size_t count);
323#if !defined(_STRNCPY)
324 char* _strncpy(
char* s1,
const char* s2,
size_t limit);
326 #define snprintf _snprintf
327 #define vsnprintf _vsnprintf
328 #define strncpy _strncpy
int kp_interlocked_decrement(KP_INTERLOCKED *target)
Decrements the value of a Kernel PlugIn interlocked counter by one.
int kp_interlocked_add(KP_INTERLOCKED *target, int val)
Adds a specified value to the current value of a Kernel PlugIn interlocked counter.
void kp_interlocked_set(KP_INTERLOCKED *target, int val)
Sets the value of a Kernel PlugIn interlocked counter to the specified value.
void kp_spinlock_uninit(KP_SPINLOCK *spinlock)
Uninitializes a Kernel PlugIn spinlock object.
UINT64 kp_get_clock_nanoseconds(void)
Get the current time in nanoseconds, relative to a non user determined starting point (Starting point...
void *__cdecl malloc(unsigned long size)
DWORD kp_get_clock_seconds(void)
Get the current time in seconds, relative to a non user determined starting point (Starting point dep...
struct _KP_SPINLOCK KP_SPINLOCK
Kernel PlugIn spinlock object structure.
int kp_interlocked_increment(KP_INTERLOCKED *target)
Increments the value of a Kernel PlugIn interlocked counter by one.
volatile int KP_INTERLOCKED
a Kernel PlugIn interlocked operations counter
KP_SPINLOCK * kp_spinlock_init(void)
Initializes a new Kernel PlugIn spinlock object.
int __cdecl KDBG(DWORD dwLevel, DWORD dwSection, const char *format,...)
void kp_interlocked_uninit(KP_INTERLOCKED *target)
Uninitializes a Kernel PlugIn interlocked counter.
void kp_interlocked_init(KP_INTERLOCKED *target)
Initializes a Kernel PlugIn interlocked counter.
void __cdecl free(void *buf)
char *__cdecl strcpy(char *s1, const char *s2)
int kp_interlocked_exchange(KP_INTERLOCKED *target, int val)
Sets the value of a Kernel PlugIn interlocked counter to the specified value and returns the previous...
int kp_interlocked_read(KP_INTERLOCKED *target)
Reads to the value of a Kernel PlugIn interlocked counter.
DWORD kp_get_clock_milliseconds(void)
Get the current time in milliseconds, relative to a non user determined starting point (Starting poin...
void kp_spinlock_wait(KP_SPINLOCK *spinlock)
Waits on a Kernel PlugIn spinlock object.
void kp_spinlock_release(KP_SPINLOCK *spinlock)
Releases a Kernel PlugIn spinlock object.