--- a/src/common/drv_dsl_cpe_os_linux.c +++ b/src/common/drv_dsl_cpe_os_linux.c @@ -11,6 +11,7 @@ #ifdef __LINUX__ #define DSL_INTERN +#include #include #include "drv_dsl_cpe_api.h" @@ -39,7 +40,7 @@ static DSL_ssize_t DSL_DRV_Write(DSL_DRV static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_inode_t * pINode, DSL_DRV_file_t * pFile, DSL_uint_t nCommand, unsigned long nArg); #else -static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_file_t * pFile, +static long DSL_DRV_Ioctls(DSL_DRV_file_t * pFile, DSL_uint_t nCommand, unsigned long nArg); #endif static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil); @@ -183,7 +184,7 @@ static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_ DSL_uint_t nCommand, unsigned long nArg) #else -static DSL_int_t DSL_DRV_Ioctls( +static long DSL_DRV_Ioctls( DSL_DRV_file_t * pFile, DSL_uint_t nCommand, unsigned long nArg) @@ -520,9 +521,9 @@ DSL_void_t* DSL_IoctlMemCpyTo( - IFX_SUCCESS on success - IFX_ERROR on error */ -DSL_DRV_STATIC DSL_int32_t DSL_DRV_KernelThreadStartup( - DSL_DRV_ThreadCtrl_t *pThrCntrl) +static int DSL_DRV_KernelThreadStartup(void *data) { + DSL_DRV_ThreadCtrl_t *pThrCntrl = (DSL_DRV_ThreadCtrl_t*) data; DSL_int32_t retVal = -1; #ifndef _lint @@ -545,30 +546,6 @@ DSL_DRV_STATIC DSL_int32_t DSL_DRV_Kerne (DSL_NULL, "ENTER - Kernel Thread Startup <%s>" DSL_DRV_CRLF, pThrCntrl->thrParams.pName)); - /* do LINUX specific setup */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) - daemonize(); - reparent_to_init(); - - /* lock the kernel. A new kernel thread starts without - the big kernel lock, regardless of the lock state - of the creator (the lock level is *not* inheritated) - */ - lock_kernel(); - - /* Don't care about any signals. */ - siginitsetinv(¤t->blocked, 0); - - /* set name of this process */ - strcpy(kthread->comm, pThrCntrl->thrParams.pName); - - /* let others run */ - unlock_kernel(); -#else - daemonize(pThrCntrl->thrParams.pName); - -#endif - /*DSL_DRV_ThreadPriorityModify(pThrCntrl->nPriority);*/ pThrCntrl->thrParams.bRunning = 1; @@ -638,9 +615,7 @@ DSL_int32_t DSL_DRV_ThreadInit( init_completion(&pThrCntrl->thrCompletion); /* start kernel thread via the wrapper function */ - pThrCntrl->pid = kernel_thread( (DSL_DRV_KERNEL_THREAD_StartRoutine)DSL_DRV_KernelThreadStartup, - (void *)pThrCntrl, - DSL_DRV_DRV_THREAD_OPTIONS); + pThrCntrl->pid = kthread_run(DSL_DRV_KernelThreadStartup, (void *)pThrCntrl, pThrCntrl->thrParams.pName); pThrCntrl->bValid = DSL_TRUE; @@ -1075,7 +1050,7 @@ static int ltq_adsl_probe(struct platfor struct class *dsl_class; DSL_int_t i; - printk(DSL_DRV_CRLF DSL_DRV_CRLF "Infineon CPE API Driver version: %s" DSL_DRV_CRLF, + printk("Infineon CPE API Driver version: %s" DSL_DRV_CRLF, &(dsl_cpe_api_version[4])); DSL_DRV_MemSet( ifxDevices, 0, sizeof(DSL_devCtx_t) * DSL_DRV_MAX_DEVICE_NUMBER ); --- a/src/include/drv_dsl_cpe_os_lint_map.h +++ b/src/include/drv_dsl_cpe_os_lint_map.h @@ -247,7 +247,7 @@ typedef struct DSL_DRV_ThreadFunction_t pThrFct; /** Kernel thread process ID */ - DSL_int32_t pid; + struct task_struct *pid; /** requested kernel thread priority */ DSL_int32_t nPriority; --- a/src/include/drv_dsl_cpe_os_linux.h +++ b/src/include/drv_dsl_cpe_os_linux.h @@ -288,7 +288,7 @@ typedef struct DSL_DRV_ThreadFunction_t pThrFct; /** Kernel thread process ID */ - DSL_int32_t pid; + struct task_struct *pid; /** requested kernel thread priority */ DSL_int32_t nPriority;