open-iscsi/scst 追踪二 (open-iscsi 用户态管理系统技术架构分析)

1.   整体架构

 

       
   
 
 

1.1. 命名UNIX域套接字

UNIX域套接字用于同一台机器上的运行的进程之间的通信,它是双向的、一种高效的IPC。UNIX域套接字可以使用标准的套接字接接口创建。

1.2. netlink

netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。

Netlink套接字可以使用标准的套接字接口来创建。socket(),bind(), sendmsg(), recvmsg() close()很容易地应用到 netlink socket

2.   iscsid实现

2.1.守护进程的实现

iscsid是一个守护进程,iscsistart和iscsiadm这两个程序通过IPC和守护进程iscsid通信,将任务委托给守护进程iscsid,iscsid执行完任务,将结果通过IPC反馈给iscsidstart或者iscsidadm。

2.1.1.  信号处理

相关结构:

 struct sigaction {

  void     (*sa_handler)(int);

  void     (*sa_sigaction)(int,siginfo_t *, void *);

  sigset_t   sa_mask;

  int        sa_flags;

};

struct sigaction:代表指定信号的处理动作。

字段名字

类型

说明

sa_handler

函数指针

信号捕捉函数,当接受到信号时,该函数会被调用。系统根据不同的信号已经设置两个捕捉函数:SIG_IGN和SIG_DEF

sa_mask

sigset_t

信号编号的一个集合,某个信号的捕捉函数被调用,且该信号在sa_mask中,那么后来的该信号将被阻塞,只有捕捉函数完成,该信号才能被递送。

sa_flags

int

指定对该信号进行处理的各个选项。

sa_sigaction

函数指针

如Sa_flag中SA_SIGINFO被设置,那么捕捉函数将由sa_sigaction来完成而不是sa_handler。

 

int sigaction(int signum, conststruct sigaction *act, struct sigaction *oldact);

功能:检查或者修改于指定编号的信号相关的处理动作。

signum࿱

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值