123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- // Copyright (c) 2019-2020 Nordic Semiconductor ASA
- // SPDX-License-Identifer: 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 identifer 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 identifer 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 identifer 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)
|