Coverage Report

Created: 2025-12-10 06:58

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libwebsockets/lib/event-libs/poll/poll.c
Line
Count
Source
1
 /*
2
 * libwebsockets - small server side websockets and web server implementation
3
 *
4
 * Copyright (C) 2010 - 2021 Andy Green <andy@warmcat.com>
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7
 * of this software and associated documentation files (the "Software"), to
8
 * deal in the Software without restriction, including without limitation the
9
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
 * sell copies of the Software, and to permit persons to whom the Software is
11
 * furnished to do so, subject to the following conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be included in
14
 * all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
 * IN THE SOFTWARE
23
 */
24
25
#include <private-lib-core.h>
26
#include "private-lib-event-libs-poll.h"
27
28
static int
29
elops_foreign_thread_poll(struct lws_context *cx, int tsi)
30
0
{
31
0
  struct lws_context_per_thread *pt = &cx->pt[tsi];
32
0
  volatile struct lws_context_per_thread *vpt =
33
0
        (volatile struct lws_context_per_thread *)pt;
34
35
  /*
36
   * To avoid mandating a specific threading library, we can check
37
   * probabilistically by seeing if the lws default wait is still asleep
38
   * at the time we are checking, if it is then we cannot be being called
39
   * by the event loop loop thread.
40
   */
41
42
0
  return vpt->inside_poll;
43
0
}
44
45
struct lws_event_loop_ops event_loop_ops_poll = {
46
  .name       = "poll",
47
48
  .foreign_thread     = elops_foreign_thread_poll,
49
50
  .flags        = LELOF_ISPOLL,
51
};
52
53
const lws_plugin_evlib_t evlib_poll = {
54
  .hdr = {
55
    "poll",
56
    "lws_evlib_plugin",
57
    "n/a",
58
    LWS_PLUGIN_API_MAGIC
59
  },
60
61
  .ops  = &event_loop_ops_poll
62
};