Por defecto, el la función de trabajo se llama con el trabajo golpeado como parámetro. Dentro de la rosca, se puede obtener fácilmente el elemento de datos de la estructura. También un Gnurou, para obtener acceso a más datos, la estructura de trabajo se puede colocar dentro de una estructura específica de implementación y utilizando el contenedor de macro dentro del hilo se puede acceder a todos los datos.
Un simple descripcion de WorkQueue
worqueue son interrupción manejo medio mechanishm parte inferior, donde se da una parte de trabajo a un hilo del núcleo para ejecutar más tarde con preemtion en una interrupciones permiten. A percpu thread events/n es creado por kernel, los hilos también pueden ser creados por el código del controlador. Una estructura se usa para identificar el hilo, un parámetro importante dentro de la estructura es el campo del nombre. También contiene una estructura por CPU que en a su vez contiene el encabezado waitqueue en el que espera el subproceso y una lista de enlaces para agregar la estructura que define el trabajo, es decir, la función y los datos. El subproceso worker obtiene esa estructura como parámetro de entrada. El subproceso se ejecuta y espera en la cola de espera para alguien para despertar el hilo. Se crea una estructura de trabajo definiendo la función. Cuando se programa una secuencia de trabajo , la estructura se agrega a la cola de la lista de enlaces y el subproceso de trabajo se activa. Al despertar, el hilo de trabajo recorre la lista de enlaces definida en la estructura por CPU y comienza a ejecutar las funciones definidas con la estructura de trabajo como parámetro. Después de ejecutarlo, elimina la entrada de la lista de enlaces.
Un excelente blog explica todo el concepto de núcleo de Linux básico con ejemplos: http://tuxthink.blogspot.co.il/2011/09 /workqueues-1-introduction.html http://tuxthink.blogspot.co.il/2011/09/workqueue-2-declarework.html http://tuxthink.blogspot.co.il/2011/09/workqueue -3-using-runtime-creation.html – 0x90