The patch titled ieee1394_core: switch to kthread API has been added to the -mm tree. Its filename is ieee1394_core-switch-to-kthread-api.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: ieee1394_core: switch to kthread API From: Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> This gets also rid of the MODPOST warning "drivers/ieee1394/ieee1394.o - Section mismatch: reference to .exit.text: from .smp_locks after '' (at offset 0x18)". Signed-off-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Jody McIntyre <scjody@xxxxxxxxxxxxxx> Signed-off-by: Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/ieee1394/ieee1394_core.c | 44 ++++++++--------------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff -puN drivers/ieee1394/ieee1394_core.c~ieee1394_core-switch-to-kthread-api drivers/ieee1394/ieee1394_core.c --- devel/drivers/ieee1394/ieee1394_core.c~ieee1394_core-switch-to-kthread-api 2006-05-29 15:35:25.000000000 -0700 +++ devel-akpm/drivers/ieee1394/ieee1394_core.c 2006-05-29 15:44:08.000000000 -0700 @@ -33,6 +33,7 @@ #include <linux/kdev_t.h> #include <linux/skbuff.h> #include <linux/suspend.h> +#include <linux/kthread.h> #include <asm/byteorder.h> #include <asm/semaphore.h> @@ -997,10 +998,8 @@ void abort_timedouts(unsigned long __opa * packets that have a "complete" function are sent here. This way, the * completion is run out of kernel context, and doesn't block the rest of * the stack. */ -static int khpsbpkt_pid = -1, khpsbpkt_kill; -static DECLARE_COMPLETION(khpsbpkt_complete); +static struct task_struct *khpsbpkt_thread; static struct sk_buff_head hpsbpkt_queue; -static DECLARE_MUTEX_LOCKED(khpsbpkt_sig); static void queue_packet_complete(struct hpsb_packet *packet) @@ -1011,9 +1010,7 @@ static void queue_packet_complete(struct } if (packet->complete_routine != NULL) { skb_queue_tail(&hpsbpkt_queue, packet->skb); - - /* Signal the kernel thread to handle this */ - up(&khpsbpkt_sig); + wake_up_process(khpsbpkt_thread); } return; } @@ -1025,19 +1022,9 @@ static int hpsbpkt_thread(void *__hi) void (*complete_routine)(void*); void *complete_data; - daemonize("khpsbpkt"); - current->flags |= PF_NOFREEZE; - while (1) { - if (down_interruptible(&khpsbpkt_sig)) { - printk("khpsbpkt: received unexpected signal?!\n" ); - break; - } - - if (khpsbpkt_kill) - break; - + while (!kthread_should_stop()) { while ((skb = skb_dequeue(&hpsbpkt_queue)) != NULL) { packet = (struct hpsb_packet *)skb->data; @@ -1048,9 +1035,12 @@ static int hpsbpkt_thread(void *__hi) complete_routine(complete_data); } + + set_current_state(TASK_INTERRUPTIBLE ); + schedule(); } - complete_and_exit(&khpsbpkt_complete, 0); + return 0; } static int __init ieee1394_init(void) @@ -1065,10 +1055,10 @@ static int __init ieee1394_init(void) HPSB_ERR("Some features may not be available\n"); } - khpsbpkt_pid = kernel_thread(hpsbpkt_thread, NULL, CLONE_KERNEL); - if (khpsbpkt_pid < 0) { + khpsbpkt_thread = kthread_run(hpsbpkt_thread, NULL, "khpsbpkt"); + if (IS_ERR(khpsbpkt_thread)) { HPSB_ERR("Failed to start hpsbpkt thread!\n"); - ret = -ENOMEM; + ret = PTR_ERR(khpsbpkt_thread); goto exit_cleanup_config_roms; } @@ -1148,10 +1138,7 @@ release_all_bus: release_chrdev: unregister_chrdev_region(IEEE1394_CORE_DEV, 256); exit_release_kernel_thread: - if (khpsbpkt_pid >= 0) { - kill_proc(khpsbpkt_pid, SIGTERM, 1); - wait_for_completion(&khpsbpkt_complete); - } + kthread_stop(khpsbpkt_thread); exit_cleanup_config_roms: hpsb_cleanup_config_roms(); return ret; @@ -1172,12 +1159,7 @@ static void __exit ieee1394_cleanup(void bus_remove_file(&ieee1394_bus_type, fw_bus_attrs[i]); bus_unregister(&ieee1394_bus_type); - if (khpsbpkt_pid >= 0) { - khpsbpkt_kill = 1; - mb(); - up(&khpsbpkt_sig); - wait_for_completion(&khpsbpkt_complete); - } + kthread_stop(khpsbpkt_thread); hpsb_cleanup_config_roms(); _ Patches currently in -mm which might be from stefanr@xxxxxxxxxxxxxxxxx are ieee1394-speed-up-of-dma_region_sync_for_cpu.patch ieee1394_core-switch-to-kthread-api.patch ieee1394_core-switch-to-kthread-api-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html