• 内核态信号量(todo)


    void sema_init (struct semaphore *sem, int val);

    void init_MUTEX (struct semaphore *sem); //将sem的值置为1,表示资源空闲
    void init_MUTEX_LOCKED (struct semaphore *sem); //将sem的值置为0,表示资源忙

    void down(struct semaphore * sem);

    该函数用于获得信号量sem,它会导致睡眠,因此不能在中断上下文(包括IRQ上下文和softirq上下文)使用该函数。该函数将把sem的值减1,如果信号量sem的值非负,就直接返回,否则调用者将被挂起,直到别的任务释放该信号量才能继续运行。

    int down_interruptible(struct semaphore * sem);

    该函数功能与down类似,不同之处为,down不会被信号(signal)打断,但down_interruptible能被信号打断,因此该函数有返回值来区分是正常返回还是被信号中断,如果返回0,表示获得信号量正常返回,如果被信号打断,返回-EINTR

    int down_trylock(struct semaphore * sem); // 非阻塞函数,不会睡眠。无法锁定资源则马上返回
    void up(struct semaphore * sem);

  • 相关阅读:
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    Ehcache(2.9.x)
    网站静态化处理—反向代理(10)
    网站静态化处理—满足静态化的前后端分离(9)
    网站静态化处理—前后端分离—下(8)
  • 原文地址:https://www.cnblogs.com/soul-stone/p/7417055.html
Copyright © 2020-2023  润新知