locks and semaphores take the form of "get lock-access critical section-release lock".*************************************************************************************************************** **********5. MutexThe mutex and the semaphore are basically the same. Not introduced.Summary: Concurrency and race are widespread, these mechanisms are a good way to solve the problem, interrupt masking is rarely used alone, atomic operations can only be done for integers, so the spin lock and signal
)definitionAmount of Completion:structcompletion com;2)Initialize:Init_completion (com);//If you feel this two-step trouble, you will be given a macro that defines and initializes the declare_completion (COM);3) WaitAmount of Completion:void__sched Wait_for_completion (structCompletion *x);//waiting for a completion to be awakenedint__sched wait_for_completion_interruptible (structCompletion *x);//interruptible wait_for_completionUnsignedLong__sched Wait_for_completion_timeout (structCompletion
kernel
unsigned long copy_to_user (void __user *to, const void * from, unsigned long count)
unsigned long copy_from_user (void *to, const void __user *from, unsigned long count);
Any function that accesses user space must be reentrant, must be able to execute concurrently with other driver functions, and must be in a state that can legally hibernate
Read method
If the return value is equal to the count parameter for passing the read
describes how an Ethernet transceiver is connected to a network controller
Int (*mdio_read) (struct net_device *dev, int phy_id, int location);
void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
Drivers/net/mii.c
Ethtool Support
Ethtool is a tool for system administrators to control network interfaces
Use Ethtool to control many interface parameters inc
ZotozoOctober 7
High_wayOctober 7
WangxinOctober 4
Font size: Big medium small blog Linux Device Driver Summary (6): 2. Share interrupt number ()
Category: 6 interruptions
Summary of Linux Device Drivers (6): 2. Share the interrupt number
Bytes
The previous section describes how to call the request_irq () interface to match the interrupt number with the inte
and the typical user-space malloc.(Simple heap-based memory allocation technology)The kernel uses special page-based allocation techniques to optimally utilize system RAM.Linux handles memory allocations by creating a series of memory object pools in which the size of the memory blocks in each pool is consistent. SecretariatWhen a request is assigned, a whole block is passed directly to the requestor in a pool that contains a sufficiently large chunk of memory.The kernel can allocate only a few
---restore content starts---Linux device driversOne, the role of device-drivenThe most popular explanation for device drivers is " Drive hardware Device Actions ". Drive and the underlying hardware directly to deal with, according to the specific work of the hardware device, read and write device registers, the completion of the device polling (polling (Polling) is a CPU decision how to provide peripheral e
Release date:Updated on: 2013-02-27
Affected Systems:XenSource XenDescription:--------------------------------------------------------------------------------Bugtraq id: 57740CVE (CAN) ID: CVE-2013-0231Xen is an open-source Virtual Machine monitor developed by the University of Cambridge.
On Linux kernel 2.6.18 and 3.8, the pciback_enable_msi function of the Xen PCI backend Driver (drivers/xen/pciback/conf_
network card driver from the IBM official website, use USB stick and other tools to upload to Linux server, then compile
RPM-IVH bnx2-
Cd/root/rpmbuild
RPMBUILD-BB Specs/bnx2.spec
Install the compiled driver package
Cd/root/rpmbuild/rpms/x86_64
RPM-IVH bnx2-
After successful installation, the following path will be displayed:/lib/modules/
Copy the generated module files to the directory:/l
unsigned long state; The bitmap identifier, whose possible value is enumerated by tasklet_state_xxx atomic_t count; Counter, 0 indicates that the micro task is closed and is not executable. Non 0 indicates that the micro task has been opened Void (*func) (unsigned long); The function to execute unsigned long data; The parameters of the above function};
/** * Author:hasen * Reference: Linux device Driver Development Details * Introduction: Android small Novice Linux * device driver Development Learning Journey * Topic: Concurrency and race in Linux device drivers * date:2014-11- 04 */1, concurrency, and race concurrency (concurrency) refers to multiple execution units
(struct work_struct *work, void (*function) (void *), void *data);
int queue_work (struct workqueue_struct *queue, struct work_struct *work);
int queue_delayed_work (struct workqueue_struct *queue, struct work_struct *work, unsigned long delay);
The return value of the above two functions is nonzero means that the given work_struct structure is already waiting in the queue
int cancel_delayed_work (struct work_struct *work);
The entry
Transferred from: http://blog.chinaunix.net/uid-15724196-id-128140.html2nd Chapter+---------------------------------------------------+| Write a block device driver |+---------------------------------------------------+| Zhao Lei || Email[email protected]|+---------------------------------------------------+| The copyright of the article belongs to the original author. || You are free to reprint this article, but the original copyright information must be retained.| For commercial use, be sure t
extended at execution time. Code that can be added to the kernel at execution time is called a "module."The Linux kernel supports several types of modules. Contains, but is not limited to, device drivers.Each module consists of the target code, which can be used to connect the module to the executing kernel using the INSMOD program, or to remove the connection using the Rmmod program.The Linux system divid
# Platform DriverAll device drivers in Linux must be registered to the system platform. This operation is completed by a set of functions defined in platform_device.h. Let's take a look at the struct platform_driver:View plaincopy to clipboardprint? Struct platform_driver {Int (* probe) (struct platform_device *);Int (* remove) (struct platform_device *);Void (* shutdown) (struct platform_device *);Int (* s
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.