unsigned long ged_copy_to_user(void __user *pvTo, const void *pvFrom, unsigned long ulBytes)
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
- if (access_ok(VERIFY_WRITE, pvTo, ulBytes))
- {
- return __copy_to_user(pvTo, pvFrom, ulBytes);
- }
- return ulBytes;
+ if (access_ok(VERIFY_WRITE, pvTo, ulBytes))
+ {
+ return __copy_to_user(pvTo, pvFrom, ulBytes);
+ }
+ return ulBytes;
#else
- return copy_to_user(pvTo, pvFrom, ulBytes);
+ return copy_to_user(pvTo, pvFrom, ulBytes);
#endif
}
unsigned long ged_copy_from_user(void *pvTo, const void __user *pvFrom, unsigned long ulBytes)
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
- if (access_ok(VERIFY_READ, pvFrom, ulBytes))
- {
- return __copy_from_user(pvTo, pvFrom, ulBytes);
- }
- return ulBytes;
+ if (access_ok(VERIFY_READ, pvFrom, ulBytes))
+ {
+ return __copy_from_user(pvTo, pvFrom, ulBytes);
+ }
+ return ulBytes;
#else
- return copy_from_user(pvTo, pvFrom, ulBytes);
+ return copy_from_user(pvTo, pvFrom, ulBytes);
#endif
}
void* ged_alloc(int i32Size)
{
- void *pvBuf;
-
- if (i32Size <= PAGE_SIZE)
- {
- pvBuf = kmalloc(i32Size, GFP_KERNEL);
- }
- else
- {
- pvBuf = vmalloc(i32Size);
- }
-
- return pvBuf;
+ void *pvBuf;
+
+ if (i32Size <= PAGE_SIZE)
+ {
+ pvBuf = kmalloc(i32Size, GFP_KERNEL);
+ }
+ else
+ {
+ pvBuf = vmalloc(i32Size);
+ }
+
+ return pvBuf;
+}
+
+void* ged_alloc_atomic(int i32Size)
+{
+ void *pvBuf;
+
+ if (i32Size <= PAGE_SIZE)
+ {
+ pvBuf = kmalloc(i32Size, GFP_ATOMIC);
+ }
+ else
+ {
+ pvBuf = vmalloc(i32Size);
+ }
+
+ return pvBuf;
}
void ged_free(void* pvBuf, int i32Size)
{
- if (pvBuf)
- {
- if (i32Size <= PAGE_SIZE)
- {
- kfree(pvBuf);
- }
- else
- {
- vfree(pvBuf);
- }
- }
+ if (pvBuf)
+ {
+ if (i32Size <= PAGE_SIZE)
+ {
+ kfree(pvBuf);
+ }
+ else
+ {
+ vfree(pvBuf);
+ }
+ }
}
long ged_get_pid(void)
{
- if (in_interrupt())
- {
- return 0xffffffffL;
- }
+ if (in_interrupt())
+ {
+ return 0xffffffffL;
+ }
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- return (long)current->pgrp;
+ return (long)current->pgrp;
#else
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- return (long)task_tgid_nr(current);
+ return (long)task_tgid_nr(current);
#else
- return (long)current->tgid;
+ return (long)current->tgid;
#endif
#endif
}
+unsigned long long ged_get_time()
+{
+ unsigned long long temp;
+
+ preempt_disable();
+ temp = cpu_clock(smp_processor_id());
+ preempt_enable();
+
+ return temp;
+}
+