os/linux/src/core/IxOsalOsMsgQ.c | 2 +- os/linux/src/core/IxOsalOsSemaphore.c | 6 +++--- os/linux/src/core/IxOsalOsServices.c | 20 ++++++++++++++++---- os/linux/src/core/IxOsalOsThread.c | 7 +------ 4 files changed, 21 insertions(+), 14 deletions(-) --- ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000 +++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000 @@ -45,9 +45,9 @@ * -- End Intel Copyright Notice -- */ #include +#include #include #include -#include #include #include "IxOsal.h" --- ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000 +++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000 @@ -46,7 +46,7 @@ */ #include -#include +#include #include "IxOsal.h" /* Define a large number */ @@ -93,7 +93,7 @@ ixOsalSemaphoreWait (IxOsalOsSemaphore * { IX_STATUS ixStatus = IX_SUCCESS; - UINT32 timeoutTime; + unsigned long timeoutTime; if (sid == NULL) { @@ -261,7 +261,7 @@ ixOsalMutexInit (IxOsalMutex * mutex) PUBLIC IX_STATUS ixOsalMutexLock (IxOsalMutex * mutex, INT32 timeout) { - UINT32 timeoutTime; + unsigned long timeoutTime; if (in_irq ()) { --- ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000 +++ ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000 @@ -54,6 +54,7 @@ #include #include #include +#include #include "IxOsal.h" @@ -89,7 +90,7 @@ static IxOsalInfoType IxOsalInfo[NR_IRQS /* * General interrupt handler */ -static void +static irqreturn_t ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs) { IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id; @@ -98,6 +99,7 @@ ixOsalOsIsrProxy (int irq, void *dev_id, "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked"); isr_proxy_info->routine (isr_proxy_info->parameter); + return IRQ_HANDLED; } /* @@ -105,11 +107,12 @@ ixOsalOsIsrProxy (int irq, void *dev_id, * This handler saves the interrupted Program Counter (PC) * into a global variable */ -static void +static irqreturn_t ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs) { ixOsalLinuxInterruptedPc = regs->ARM_pc; ixOsalOsIsrProxy(irq, dev_id, regs); + return IRQ_HANDLED; } /************************************** @@ -191,10 +194,15 @@ ixOsalIrqUnbind (UINT32 vector) PUBLIC UINT32 ixOsalIrqLock () { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + unsigned long flags; + local_irq_save(flags); +#else UINT32 flags; save_flags (flags); cli (); - return flags; +#endif + return (UINT32)flags; } /* Enable interrupts and task scheduling, @@ -204,7 +212,11 @@ ixOsalIrqLock () PUBLIC void ixOsalIrqUnlock (UINT32 lockKey) { +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + local_irq_restore((unsigned long)lockKey); +# else restore_flags (lockKey); +# endif } PUBLIC UINT32 @@ -329,7 +341,7 @@ ixOsalBusySleep (UINT32 microseconds) PUBLIC void ixOsalSleep (UINT32 milliseconds) { - if (milliseconds != 0) + if (milliseconds*HZ >= 1000) { set_current_state(TASK_INTERRUPTIBLE); schedule_timeout ((milliseconds * HZ) / 1000); --- ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000 +++ ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000 @@ -65,12 +65,7 @@ thread_internal (void *unused) void *arg = IxOsalOsThreadData.arg; static int seq = 0; - daemonize (); - reparent_to_init (); - - exit_files (current); - - snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq); + daemonize ("IxOsal %d", ++seq); up (&IxOsalThreadMutex);