>From Documentation/feature_removal_schedule.txt, it is well-known that
kernel_thread() API usage is discouraged, but in staging we still
routinely see its use. Perhaps the original driver owner have
overlooked this?
Thanks.
./rt2870/common/2870_rtmp_init.c:
pid_number = kernel_thread(MlmeThread, pAd, CLONE_VM);
pid_number = kernel_thread(RTUSBCmdThread, pAd, CLONE_VM);
pid_number = kernel_thread(TimerQThread, pAd, CLONE_VM);
./usbip/usbip_common.c:
retval = kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
retval = kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
./usbip/usbip_event.c:
kernel_thread(usbip_thread, (void *)eh, 0);
./epl/ShbIpc-LinuxKernel.c:
kernel_thread(ShbIpcThreadSignalNewData, pShbInstance_p,
kernel_thread(ShbIpcThreadSignalJobReady, pShbInstance_p,
./epl/EplSdoUdpu.c:
kernel_thread(EplSdoUdpThread, &SdoUdpInstance_g, CLONE_KERNEL);
--
Regards,
Peter Teoh
On Fri, Mar 13, 2009 at 04:26:27PM +0800, Peter Teoh wrote:
> >From Documentation/feature_removal_schedule.txt, it is well-known that
> kernel_thread() API usage is discouraged, but in staging we still
> routinely see its use. Perhaps the original driver owner have
> overlooked this?
Yes, they probably didn't realize this and some of this code predates
the kthread code.
> ./rt2870/common/2870_rtmp_init.c:
> pid_number = kernel_thread(MlmeThread, pAd, CLONE_VM);
> pid_number = kernel_thread(RTUSBCmdThread, pAd, CLONE_VM);
> pid_number = kernel_thread(TimerQThread, pAd, CLONE_VM);
>
> ./usbip/usbip_common.c:
> retval = kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
> retval = kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
>
> ./usbip/usbip_event.c:
> kernel_thread(usbip_thread, (void *)eh, 0);
>
> ./epl/ShbIpc-LinuxKernel.c:
> kernel_thread(ShbIpcThreadSignalNewData, pShbInstance_p,
> kernel_thread(ShbIpcThreadSignalJobReady, pShbInstance_p,
>
> ./epl/EplSdoUdpu.c:
> kernel_thread(EplSdoUdpThread, &SdoUdpInstance_g, CLONE_KERNEL);
Patches are gladly accepted to clean this up.
thanks,
greg k-h
Hello,
sorry for stepping in. I found the original posting via Google while
trying to compile the openPOWERLINK protocol stack with a recent Linux
kernel. I am the official maintainer of openPOWERLINK.
> ./epl/ShbIpc-LinuxKernel.c:
> kernel_thread(ShbIpcThreadSignalNewData, pShbInstance_p,
> kernel_thread(ShbIpcThreadSignalJobReady, pShbInstance_p,
>
> ./epl/EplSdoUdpu.c:
> kernel_thread(EplSdoUdpThread, &SdoUdpInstance_g, CLONE_KERNEL);
As I understand, there are some issues (race conditions) with the
kthread-API and signals. I need signals, because the kernel-threads may
block in some I/O functions.
What is the right way to use the kthread-API with signals? Or are there
any solutions to avoid signals?
Is there any sample code that shows how to do it?
Thanks in advance for any help.
Regards,
Daniel Kr?ger
--
SYS TEC electronic GmbH
August-Bebel-Str. 29
D-07973 Greiz
Telefon : +49 (0) 3661 6279 0
Fax : +49 (0) 3661 6279 99
Email : [email protected]
Internet : http://www.systec-electronic.com
Managing Director : Dipl.-Phys. Siegmar Schmidt
Commercial registry : Amtsgericht Jena, HRB 205563