You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
3.3 KiB
194 lines
3.3 KiB
// Copyright (c) 2019-2020 Nordic Semiconductor ASA |
|
// SPDX-License-Identifier: Apache-2.0 |
|
|
|
// Replace use of K_NO_WAIT and K_FOREVER in API that requires |
|
// timeouts be specified as integral milliseconds. |
|
// |
|
// These constants used to have the values 0 and -1 respectively; they |
|
// are now timeout values which are opaque non-integral values that |
|
// can't be converted to integers automatically. For K_NO_WAIT replace |
|
// with 0; for K_FOREVER replace with SYS_FOREVER_MS, the value of |
|
// which is -1. |
|
// |
|
// Options: --include-headers |
|
|
|
virtual patch |
|
virtual report |
|
|
|
// ** Handle millisecond timeout as the last parameter |
|
|
|
// Match identifier passed as timeout |
|
@match_fn_l1@ |
|
identifier fn =~ "(?x)^ |
|
(dmic_read |
|
|bt_buf_get_(rx|cmd_complete|evt) |
|
|bt_mesh_cfg_cli_timeout_set |
|
|isotp_(bind|recv(_net)?|send(_net)?(_ctx)?_buf) |
|
|tty_set_(tx|rx)_timeout |
|
|can_(write|recover) |
|
|uart_(tx|rx_enable) |
|
|dns_(resolve_name|get_addr_info) |
|
|net_config_init |
|
|net_ppp_ping |
|
|websocket_(send|recv)_msg |
|
)$"; |
|
identifier T; |
|
@@ |
|
fn(..., T); |
|
|
|
@report_fn_l1 |
|
extends match_fn_l1 |
|
depends on report |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
position p; |
|
@@ |
|
fn@p(..., |
|
( |
|
K_NO_WAIT |
|
| |
|
K_FOREVER |
|
) |
|
) |
|
|
|
@script:python |
|
depends on report |
|
@ |
|
fn << match_fn_l1.fn; |
|
T << match_fn_l1.T; |
|
p << report_fn_l1.p; |
|
@@ |
|
msg = "WARNING: [msl1] replace constant {} with ms duration in {}".format(T, fn) |
|
coccilib.report.print_report(p[0], msg); |
|
|
|
@fix_fn_l1 |
|
extends match_fn_l1 |
|
depends on patch |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
@@ |
|
fn(..., |
|
( |
|
- K_NO_WAIT |
|
+ 0 |
|
| |
|
- K_FOREVER |
|
+ SYS_FOREVER_MS |
|
)) |
|
|
|
// ** Handle millisecond timeout as second from last parameter |
|
|
|
// Match identifier passed as timeout |
|
@match_fn_l2@ |
|
identifier fn =~ "(?x)^ |
|
(http_client_req |
|
|websocket_connect |
|
)$"; |
|
expression L1; |
|
identifier T; |
|
@@ |
|
fn(..., T, L1) |
|
|
|
@report_fn_l2 |
|
extends match_fn_l2 |
|
depends on report |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
expression X1; |
|
position p; |
|
@@ |
|
fn@p(..., |
|
( |
|
K_NO_WAIT |
|
| |
|
K_FOREVER |
|
) |
|
, X1) |
|
|
|
@script:python |
|
depends on report |
|
@ |
|
fn << match_fn_l2.fn; |
|
T << match_fn_l2.T; |
|
p << report_fn_l2.p; |
|
@@ |
|
msg = "WARNING: [msl2] replace constant {} with ms duration in {}".format(T, fn) |
|
coccilib.report.print_report(p[0], msg); |
|
|
|
@fix_fn_l2 |
|
extends match_fn_l2 |
|
depends on patch |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
expression X1; |
|
@@ |
|
fn(..., |
|
( |
|
- K_NO_WAIT |
|
+ 0 |
|
| |
|
- K_FOREVER |
|
+ SYS_FOREVER_MS |
|
) |
|
, X1) |
|
|
|
// ** Handle millisecond timeout as third from last parameter |
|
|
|
// Match identifier passed as timeout |
|
@match_fn_l3@ |
|
identifier fn =~ "(?x)^ |
|
(can_send |
|
|lora_recv |
|
)$"; |
|
expression L1; |
|
expression L2; |
|
identifier T; |
|
@@ |
|
fn(..., T, L2, L1) |
|
|
|
@report_fn_l3 |
|
extends match_fn_l3 |
|
depends on report |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
position p; |
|
@@ |
|
fn@p(..., |
|
( |
|
K_NO_WAIT |
|
| |
|
K_FOREVER |
|
) |
|
, L2, L1) |
|
|
|
@script:python |
|
depends on report |
|
@ |
|
fn << match_fn_l3.fn; |
|
T << match_fn_l3.T; |
|
p << report_fn_l3.p; |
|
@@ |
|
msg = "WARNING: [msl3] replace constant {} with ms duration in {}".format(T, fn) |
|
coccilib.report.print_report(p[0], msg); |
|
|
|
@fix_fn_l3 |
|
extends match_fn_l3 |
|
depends on patch |
|
@ |
|
identifier K_NO_WAIT =~ "^K_NO_WAIT$"; |
|
identifier K_FOREVER =~ "^K_FOREVER$"; |
|
@@ |
|
fn(..., |
|
( |
|
- K_NO_WAIT |
|
+ 0 |
|
| |
|
- K_FOREVER |
|
+ SYS_FOREVER_MS |
|
) |
|
, L2, L1)
|
|
|