Patent ID: 7404193

Claim:
A method for communicating with a device, comprising: executing a kernel module in a memory; executing at least one kernel thread in the memory to execute device driver functions for the kernel module, wherein the device driver functions are capable of being invoked by system calls from applications operating in a user context; executing, with the at least one kernel thread, calls to device driver functions for the kernel module running in a kernel context; buffering a parameter list; accessing, with one of the at least one kernel thread, device information from the device; setting device values in the buffered parameter list to the accessed device information from the device; setting a flag indicating that the at least one kernel thread needs to set parameters at the device to device parameter values set in the buffered parameter list; and processing, by one of the at least one kernel thread, the buffered parameter list in response to the flag being set by performing: applying a lock on information in the buffered parameter list including the device parameter values; after applying the lock, copying the device parameter values from the buffered parameter list to a temporary buffer, wherein parameters at the device are set to the device parameter values from the buffered parameter list in the temporary buffer; and releasing the lock after copying the device parameter values from the buffered parameter list to the temporary buffer.