MCPcopy Create free account
hub / github.com/FedeDP/Clight / receive

Function receive

src/modules/pm.c:48–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46}
47
48static void receive(const msg_t *const msg, UNUSED const void* userdata) {
49 switch (MSG_TYPE()) {
50 case FD_UPD: {
51 /* We are reading a message delayed of conf.resumedelay */
52 message_t *suspend_msg = (message_t *)msg->fd_msg->userptr;
53 read_timer(delayed_resume_fd);
54 M_PUB(suspend_msg);
55 m_deregister_fd(delayed_resume_fd);
56 break;
57 }
58 case INHIBIT_UPD: {
59 if (conf.inh_conf.inhibit_pm) {
60 DECLARE_HEAP_MSG(pm_req, PM_REQ);
61 pm_req->pm.old = !state.inhibited;
62 pm_req->pm.new = state.inhibited;
63 M_PUB(pm_req);
64 }
65 break;
66 }
67 case PM_REQ: {
68 pm_upd *up = (pm_upd *)MSG_DATA();
69 if (VALIDATE_REQ(up)) {
70 on_pm_req(up->new);
71 }
72 break;
73 }
74 case SYSTEM_UPD:
75 /* Release any PowerManagement inhibition upon leaving as we're not PM manager */
76 if (msg->ps_msg->type == LOOP_STOPPED && pm_inh_token != -1) {
77 on_pm_req(false);
78 }
79 break;
80 case SUSPEND_REQ: {
81 suspend_upd *up = (suspend_upd *)MSG_DATA();
82 // VALIDATE_REQ is called inside
83 on_suspend_req(up);
84 break;
85 }
86 default:
87 break;
88 }
89}
90
91static void destroy(void) {
92 /* Destroy this match slot */

Callers

nothing calls this directly

Calls 3

read_timerFunction · 0.85
on_pm_reqFunction · 0.85
on_suspend_reqFunction · 0.85

Tested by

no test coverage detected