同步总结笔记
2025-11-25
8
0
struct device_node* nd = of_find_node_by_path("/key");
int gpio = of_get_named_gpio(nd,"key_gpio",0);
char name[100];
sprintf(name,"ke_gpio");
gpio_request(gpio,name);
gpio_direction_input(gpio);
int irqnum = irq_of_parse_and_map(nd,0);
int irqnum = gpio_to_irq(gpio);
msecs_to_jiffies(10)
timer_list timer;
init_timer(&timer);
timer.function = timer_function;
mod_timer(&tier,jiffies+mssecs_to_jiffies(10));
void timer_function()
{
mod_timer(&tier,jiffies+mssecs_to_jiffies(10));
}
atomic_t value;
atomic_set(&value,10);
int v = automic_read(&value);
automic_dec_and_test -1,==0?true:false;
wait_queue_head_t wait;
init_wait_queue_head(&wait);
//setevnet
wake_up_interruptible(&wait);
wait_event_interruptible(&wait,atomic_read(&value));
spinlock_t lock;
spin_lock_init(&lock);
sprin_lock(&lock);
spin_unlokc(&lock);
unsigned int flag;
spin_lock_irqsave(&flag);
spin_unlock_irqrestore(&flag);
semaphore_t sem;
sema_init(&sem,10);
down_interruptible(&sem);
up_interruptible(&sem);
mutex t;
mutex_init(&t);
mutex_lock(&t);
mutex_unlokc(&t);
--------------device-tree- dts-->dtc----->dtb--------
device_noe* n = of_find_node_by_path("/gpio");
int gpio = of_get_named_gpio("led-gpio,"key-gpio");
gpio_request(gpio,"mygpio");
gpio_direction_input(gpio);
gpio_direction_output(gpio,0);
int value = gpio_get_value(gpio);
gpio_set_value(gpio,1);
int intnum = gpio_to_irq(gpio);
int intnum = irq_of_parse_and_map(node,0);
request_irq(intnum,irq_function,IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RASING,"IRQ_NANME",&dev);
ARM&Linux基础





