MCPcopy Index your code
hub / github.com/F-Stack/f-stack / InitKqueue

Method InitKqueue

adapter/micro_thread/kqueue_proxy.cpp:40–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38}
39
40int KqueueProxy::InitKqueue(int max_num)
41{
42 int rc = 0;
43 if (max_num > _maxfd)
44 {
45 _maxfd = max_num;
46 }
47
48 _kqfd = ff_kqueue();
49 if (_kqfd < 0)
50 {
51 rc = -1;
52 goto EXIT_LABEL;
53 }
54
55 ff_fcntl(_kqfd, F_SETFD, FD_CLOEXEC);
56
57 _kqrefs = new KqFdRef[_maxfd];
58 if (_kqrefs == NULL)
59 {
60 rc = -2;
61 goto EXIT_LABEL;
62 }
63
64 _evtlist = (KqEvent*)calloc(_maxfd, sizeof(KqEvent));
65 if (_evtlist == NULL)
66 {
67 rc = -3;
68 goto EXIT_LABEL;
69 }
70
71 struct rlimit rlim;
72 memset(&rlim, 0, sizeof(rlim));
73 if (getrlimit(RLIMIT_NOFILE, &rlim) == 0)
74 {
75 if ((int)rlim.rlim_max < _maxfd)
76 {
77 rlim.rlim_cur = rlim.rlim_max;
78 setrlimit(RLIMIT_NOFILE, &rlim);
79 rlim.rlim_cur = _maxfd;
80 rlim.rlim_max = _maxfd;
81 setrlimit(RLIMIT_NOFILE, &rlim);
82 }
83 }
84
85EXIT_LABEL:
86
87 if (rc < 0)
88 {
89 TermKqueue();
90 }
91
92 return rc;
93}
94
95void KqueueProxy::TermKqueue()
96{

Callers 1

InitFrameMethod · 0.80

Calls 4

ff_kqueueFunction · 0.85
ff_fcntlFunction · 0.85
callocFunction · 0.85
memsetFunction · 0.85

Tested by

no test coverage detected