Coverage Report

Created: 2026-03-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Utilities/cmlibuv/src/unix/loop-watcher.c
Line
Count
Source
1
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
 *
3
 * Permission is hereby granted, free of charge, to any person obtaining a copy
4
 * of this software and associated documentation files (the "Software"), to
5
 * deal in the Software without restriction, including without limitation the
6
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
 * sell copies of the Software, and to permit persons to whom the Software is
8
 * furnished to do so, subject to the following conditions:
9
 *
10
 * The above copyright notice and this permission notice shall be included in
11
 * all copies or substantial portions of the Software.
12
 *
13
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
 * IN THE SOFTWARE.
20
 */
21
22
#include "uv.h"
23
#include "internal.h"
24
25
#define UV_LOOP_WATCHER_DEFINE(name, type)                                    \
26
0
  int uv_##name##_init(uv_loop_t* loop, uv_##name##_t* handle) {              \
27
0
    uv__handle_init(loop, (uv_handle_t*)handle, UV_##type);                   \
28
0
    handle->name##_cb = NULL;                                                 \
29
0
    return 0;                                                                 \
30
0
  }                                                                           \
31
                                                                              \
32
0
  int uv_##name##_start(uv_##name##_t* handle, uv_##name##_cb cb) {           \
33
0
    if (uv__is_active(handle)) return 0;                                      \
34
0
    if (cb == NULL) return UV_EINVAL;                                         \
35
0
    uv__queue_insert_head(&handle->loop->name##_handles, &handle->queue);     \
36
0
    handle->name##_cb = cb;                                                   \
37
0
    uv__handle_start(handle);                                                 \
38
0
    return 0;                                                                 \
39
0
  }                                                                           \
40
                                                                              \
41
0
  int uv_##name##_stop(uv_##name##_t* handle) {                               \
42
0
    if (!uv__is_active(handle)) return 0;                                     \
43
0
    uv__queue_remove(&handle->queue);                                         \
44
0
    uv__handle_stop(handle);                                                  \
45
0
    return 0;                                                                 \
46
0
  }                                                                           \
Unexecuted instantiation: uv_prepare_stop
Unexecuted instantiation: uv_check_stop
Unexecuted instantiation: uv_idle_stop
47
                                                                              \
48
0
  void uv__run_##name(uv_loop_t* loop) {                                      \
49
0
    uv_##name##_t* h;                                                         \
50
0
    struct uv__queue queue;                                                   \
51
0
    struct uv__queue* q;                                                      \
52
0
    uv__queue_move(&loop->name##_handles, &queue);                            \
53
0
    while (!uv__queue_empty(&queue)) {                                        \
54
0
      q = uv__queue_head(&queue);                                             \
55
0
      h = uv__queue_data(q, uv_##name##_t, queue);                            \
56
0
      uv__queue_remove(q);                                                    \
57
0
      uv__queue_insert_tail(&loop->name##_handles, q);                        \
58
0
      h->name##_cb(h);                                                        \
59
0
    }                                                                         \
60
0
  }                                                                           \
61
                                                                              \
62
0
  void uv__##name##_close(uv_##name##_t* handle) {                            \
63
0
    uv_##name##_stop(handle);                                                 \
64
0
  }
Unexecuted instantiation: uv__prepare_close
Unexecuted instantiation: uv__check_close
Unexecuted instantiation: uv__idle_close
65
66
0
UV_LOOP_WATCHER_DEFINE(prepare, PREPARE)
Unexecuted instantiation: uv_prepare_init
Unexecuted instantiation: uv_prepare_start
Unexecuted instantiation: uv__run_prepare
67
0
UV_LOOP_WATCHER_DEFINE(check, CHECK)
Unexecuted instantiation: uv_check_init
Unexecuted instantiation: uv_check_start
Unexecuted instantiation: uv__run_check
68
UV_LOOP_WATCHER_DEFINE(idle, IDLE)
Unexecuted instantiation: uv_idle_init
Unexecuted instantiation: uv_idle_start
Unexecuted instantiation: uv__run_idle