• init_MUTEX


    2.6.25及以后的linux内核版本废除了init_MUTEX函数

    新版本使用sema_init函数

    平台:X86 32位
    内核:2.6.24
    定义
    : 

    引用
    static inline void init_MUTEX (struct semaphore *sem) 

            sema_init(sem, 1); 
    }



    说明:Init_MUTEX()函数初始化信号量为互斥量。 互斥量为信号量的特例,它可以防止数据被两个不同系统调用读写。 

    sema_init (sem, 1) 定义为:

    引用

    static inline void sema_init (struct semaphore *sem, int val)
    {
    /*
    *    *sem = (struct semaphore)__SEMAPHORE_INITIALIZER((*sem),val);
    *
    * i'd rather use the more flexible initialization above, but sadly
    * GCC 2.7.2.3 emits a bogus warning. EGCS doesn't. Oh well.
    */
        atomic_set(&sem->count, val);
        sem->sleepers = 0;
        init_waitqueue_head(&sem->wait);
    }


    sleepers : 指定了允许进入等待进入临界区的进程数,这里初始化为 0 。
    init_waitqueue_head() : 初始化一个等待队列头。

    这样不难得出

    废除 init_MUTEX 后

    将原来使用 init_MUTEX(sem)的地方统统替换为sema_init(sem, 1); 即可

  • 相关阅读:
    Centos7yum安装LNMP
    CentOS7安装和配置rsync+inotify
    SSH
    nginx https
    nginx rewrite
    nginx代理缓存
    nginx动静分离
    Centos7使用squid实现正向代理
    利用tengine的nginx_upstream_check_module来检测后端服务状态
    nginx基于tcp负载均衡
  • 原文地址:https://www.cnblogs.com/Ph-one/p/4411802.html
Copyright © 2020-2023  润新知