Linux内核API之同步机制
同步机制 – Linux内核API write_sequnlock
函数write_sequnlock():写者释放指定的顺序锁sl,同时顺序锁的顺序号加1。 write_sequnlock文件包含 #include <linux/seqlock.h> write_sequnlock函……同步机制 – Linux内核API write_seqlock
函数write_seqlock():写者获取指定的顺序锁sl,同时顺序锁的顺序号加1。 write_seqlock文件包含 #include <linux/seqlock.h> write_seqlock函数定义 ……同步机制 – Linux内核API up_write
函数up_write()是写者释放读写信号量sem时调用的。它一般与down_write()函数和down_write_trylock()配对使用,但是如果down_write_trylock()返回0,则表示写……同步机制 – Linux内核API up_read
函数up_read()是读者释放读写信号量sem时调用的。它一般与down_read()函数和down_read_trylock()配对使用,但是如果down_read_trylock()返回0,则表示读者未……同步机制 – Linux内核API up
up()函数的功能是释放信号量sem,释放信号量后,sem的计数器的值将加1。当一个线程调用down函数的某个版本获得信号量后,则它将获得信号量所保护的临界区,对……同步机制 – Linux内核API seqlock_init
宏seqlock_init():初始化顺序锁x,同时对顺序锁的顺序号进行初始化。 seqlock_init文件包含 #include <linux/seqlock.h> seqlock_init宏定义: 在内……同步机制 – Linux内核API sema_init
sema_init()函数用来初始化信号量,将信号量的计数器值设置为val。 sema_init文件包含 #include <linux/semaphore.h> sema_init函数定义 在内核源码中……同步机制 – Linux内核API read_seqretry
函数read_seqretry():读者在访问完被顺序锁s1保护的共享资源后需要调用该函数来检查,在读访问期间是否有写者访问了该共享资源,该检查是通过判断当前顺序锁……同步机制 – Linux内核API read_seqbegin
函数read_seqbegin():读者访问共享资源前需要调用该函数,该函数实际并没有进行获得和释放锁的操作,它只是返回顺序锁sl的当前顺序号。如果顺序锁sl正被某一……同步机制 – Linux内核API init_rwsem
宏init_rwsem()的功能是初始化读写信号量,将信号量的count字段设置为0, wait_lock自旋锁设置为未锁,将等待进程的链表wait_list置为空链表。关于读写信号量……同步机制 – Linux内核API downgrade_write
函数downgrade_write()函数用来将写者降级为读者,这在有些情况下是很必要的。因为写者是排他性的,在写者保持读写信号量期间,其他任何读者或写者都不能获得……同步机制 – Linux内核API down_write_trylock
函数down_write_trylock()是写者用来尝试得到读写信号量sem时调用的,它与down_write()的功能类似,只是它不会导致调用者睡眠,即调用该函数的进程在不能获取……同步机制 – Linux内核API down_write
函数down_write()是写者用来得到读写信号量sem时调用的,如果该信号量被读者或写者所持有,则对该函数的调用会导致调用者的睡眠。 down_write文件包含 #inclu……同步机制 – Linux内核API down_trylock
down_trylock()函数尝试原子地获取信号量sem,成功或不成功获取信号量,函数都将立即返回,而down()函数在不能成功获取时将进入睡眠状态而一直等待下去。函数……同步机制 – Linux内核API down_timeout
down_timeout()函数的功能是在指定的时间timeout内获取信号量sem,成功获取信号量后,sem的计数器的值将减1。如果超时还未获取信号量则返回,不会继续等待下……同步机制 – Linux内核API down_read_trylock
函数down_read_trylock()是读者用来尝试得到读写信号量sem时调用的,它与down_read()的功能类似,只是它不会导致调用者睡眠,即调用该函数的进程在不能获取信……同步机制 – Linux内核API down_read
函数down_read()是读者用来得到读写信号量sem时调用的,如果该信号量在被写者所持有,则对该函数的调用会导致调用者的睡眠。通过该操作,多个读者可以获得读……同步机制 – Linux内核API down_killable
down_killable()函数用来获取信号量,将信号量sem的计数器值减1,但它是可被致命信号杀死的,这一点与down()函数不同,down()不能被任何信号打断,也与down_i……同步机制 – Linux内核API down_interruptible
down_interruptible()函数用来获取信号量,将信号量sem的计数器值减1,但它是可被信号中断的,这一点与down()函数不同。当有另外的内核控制路径给这个因为竞……同步机制 – Linux内核API down
down()函数的功能是获取信号量,成功后信号量计数器将减1。由于获取不成功时,进程将进入睡眠状态而一直等待下去,因此一般不使用该函数,多数情况下使用down……同步机制 – Linux内核API atomic_sub_return
函数atomic_sub_return()的功能是将原子类型的变量v的值原子地减去i,并返回减去i后的v的值。 atomic_sub_return文件包含 #include <asm/atomic.h> at……同步机制 – Linux内核API atomic_sub_and_test
函数atomic_sub_and_test()的功能是将原子类型的变量v的值减去i,并判断其结果是否为0。 atomic_sub_and_test文件包含 #include <asm/atomic.h> atomi……同步机制 – Linux内核API atomic_sub
函数atomic_sub()的功能是将原子类型的变量v的值原子地减少i。 atomic_sub文件包含 #include <asm/atomic.h> atomic_sub函数定义 在内核源码中的位置……同步机制 – Linux内核API atomic_set
函数atomic_set()的功能是将原子类型的变量v的值设置为i atomic_set文件包含 #include <asm/atomic.h> atomic_set函数定义 在内核源码中的位置:linux……同步机制 – Linux内核API atomic_read
函数atomic_read()的功能是对原子类型的变量v进行原子读操作,得到其值。 atomic_read文件包含 #include <asm/atomic.h> atomic_read函数定义 在内核……