Asterisk - The Open Source Telephony Project  GIT-master-e8cda4b
Enumerations | Functions | Variables
time.h File Reference

Time-related functions and macros. More...

#include "asterisk/autoconfig.h"
#include <sys/time.h>
#include <unistd.h>
#include "asterisk/inline_api.h"

Go to the source code of this file.

Enumerations

enum  TIME_UNIT {
  TIME_UNIT_ERROR = -1, TIME_UNIT_NANOSECOND, TIME_UNIT_MICROSECOND, TIME_UNIT_MILLISECOND,
  TIME_UNIT_SECOND, TIME_UNIT_MINUTE, TIME_UNIT_HOUR, TIME_UNIT_DAY,
  TIME_UNIT_WEEK, TIME_UNIT_MONTH, TIME_UNIT_YEAR
}
 Time units enumeration. More...
 

Functions

void ast_format_duration_hh_mm_ss (int duration, char *buf, size_t length)
 Formats a duration into HH:MM:SS. More...
 
int ast_remaining_ms (struct timeval start, int max_ms)
 Calculate remaining milliseconds given a starting timestamp and upper bound. More...
 
struct timeval ast_samp2tv (unsigned int _nsamp, unsigned int _rate)
 Returns a timeval corresponding to the duration of n samples at rate r. Useful to convert samples to timevals, or even milliseconds to timevals in the form ast_samp2tv(milliseconds, 1000) More...
 
struct timeval ast_time_create (ast_time_t sec, ast_suseconds_t usec)
 Create a timeval object initialized to given values. More...
 
struct timeval ast_time_create_by_unit (unsigned long val, enum TIME_UNIT unit)
 Convert the given unit value, and create a timeval object from it. More...
 
struct timeval ast_time_create_by_unit_str (unsigned long val, const char *unit)
 Convert the given unit value, and create a timeval object from it. More...
 
enum TIME_UNIT ast_time_str_to_unit (const char *unit)
 Convert a string to a time unit enumeration value. More...
 
ast_suseconds_t ast_time_tv_to_usec (const struct timeval *tv)
 Convert a timeval structure to microseconds. More...
 
struct timespec ast_tsnow (void)
 Returns current timespec. Meant to avoid calling ast_tvnow() just to create a timespec from the timeval it returns. More...
 
struct timeval ast_tv (ast_time_t sec, ast_suseconds_t usec)
 Returns a timeval from sec, usec. More...
 
struct timeval ast_tvadd (struct timeval a, struct timeval b)
 Returns the sum of two timevals a + b. More...
 
int ast_tvcmp (struct timeval _a, struct timeval _b)
 Compres two struct timeval instances returning -1, 0, 1 if the first arg is smaller, equal or greater to the second. More...
 
int64_t ast_tvdiff_ms (struct timeval end, struct timeval start)
 Computes the difference (in milliseconds) between two struct timeval instances. More...
 
int64_t ast_tvdiff_sec (struct timeval end, struct timeval start)
 Computes the difference (in seconds) between two struct timeval instances. More...
 
int64_t ast_tvdiff_us (struct timeval end, struct timeval start)
 Computes the difference (in microseconds) between two struct timeval instances. More...
 
int ast_tveq (struct timeval _a, struct timeval _b)
 Returns true if the two struct timeval arguments are equal. More...
 
struct timeval ast_tvnow (void)
 Returns current timeval. Meant to replace calls to gettimeofday(). More...
 
struct timeval ast_tvsub (struct timeval a, struct timeval b)
 Returns the difference of two timevals a - b. More...
 
int ast_tvzero (const struct timeval t)
 Returns true if the argument is 0,0. More...
 
typedef typeof (dummy_tv_var_for_types.tv_sec) ast_time_t
 

Variables

struct timeval dummy_tv_var_for_types
 

Detailed Description

Time-related functions and macros.

Definition in file time.h.

Enumeration Type Documentation

◆ TIME_UNIT

enum TIME_UNIT

Time units enumeration.

Enumerator
TIME_UNIT_ERROR 
TIME_UNIT_NANOSECOND 
TIME_UNIT_MICROSECOND 
TIME_UNIT_MILLISECOND 
TIME_UNIT_SECOND 
TIME_UNIT_MINUTE 
TIME_UNIT_HOUR 
TIME_UNIT_DAY 
TIME_UNIT_WEEK 
TIME_UNIT_MONTH 
TIME_UNIT_YEAR 

Definition at line 243 of file time.h.

Function Documentation

◆ ast_format_duration_hh_mm_ss()

void ast_format_duration_hh_mm_ss ( int  duration,
char *  buf,
size_t  length 
)

Formats a duration into HH:MM:SS.

Since
12
Parameters
durationThe time (in seconds) to format
bufA buffer to hold the formatted string'
lengthThe size of the buffer

Definition at line 2049 of file main/utils.c.

Referenced by cli_channel_print_body(), cli_channelstats_print_body(), handle_bridge_show_all(), handle_bridge_show_specific(), show_chanstats_cb(), and stasis_show_topic().

2050 {
2051  int durh, durm, durs;
2052  durh = duration / 3600;
2053  durm = (duration % 3600) / 60;
2054  durs = duration % 60;
2055  snprintf(buf, length, "%02d:%02d:%02d", durh, durm, durs);
2056 }
char buf[BUFSIZE]
Definition: eagi_proxy.c:66

◆ ast_remaining_ms()

int ast_remaining_ms ( struct timeval  start,
int  max_ms 
)

Calculate remaining milliseconds given a starting timestamp and upper bound.

If the upper bound is negative then this indicates that there is no upper bound on the amount of time to wait. This will result in a negative return.

Parameters
startWhen timing started being calculated
max_msThe maximum number of milliseconds to wait from start. May be negative.
Returns
The number of milliseconds left to wait for. May be negative.

Definition at line 2033 of file main/utils.c.

References ast_tvdiff_ms(), and ast_tvnow().

Referenced by __analog_ss_thread(), __ast_answer(), __ast_request_and_dial(), analog_ss_thread(), ast_iostream_write(), ast_recvtext(), ast_stun_request(), ast_waitfordigit_full(), disable_t38(), find_cache(), generic_fax_exec(), iostream_read(), parking_set_duration(), receivefax_t38_init(), record_exec(), safe_sleep_conditional(), sendfax_t38_init(), sorcery_memory_cache_ami_populate(), wait_for_answer(), waitforcond_exec(), and waitforring_exec().

2034 {
2035  int ms;
2036 
2037  if (max_ms < 0) {
2038  ms = max_ms;
2039  } else {
2040  ms = max_ms - ast_tvdiff_ms(ast_tvnow(), start);
2041  if (ms < 0) {
2042  ms = 0;
2043  }
2044  }
2045 
2046  return ms;
2047 }
struct timeval ast_tvnow(void)
Returns current timeval. Meant to replace calls to gettimeofday().
Definition: time.h:150
int64_t ast_tvdiff_ms(struct timeval end, struct timeval start)
Computes the difference (in milliseconds) between two struct timeval instances.
Definition: time.h:98

◆ ast_samp2tv()

struct timeval ast_samp2tv ( unsigned int  _nsamp,
unsigned int  _rate 
)

◆ ast_time_create()

struct timeval ast_time_create ( ast_time_t  sec,
ast_suseconds_t  usec 
)

Create a timeval object initialized to given values.

Parameters
secThe timeval seconds value
usecThe timeval microseconds value
Returns
A timeval object

Definition at line 94 of file time.c.

References ast_tv().

Referenced by AST_TEST_DEFINE(), ast_time_create_by_unit(), and normalize_and_create().

95 {
96  return ast_tv(sec, usec);
97 }
struct timeval ast_tv(ast_time_t sec, ast_suseconds_t usec)
Returns a timeval from sec, usec.
Definition: time.h:226

◆ ast_time_create_by_unit()

struct timeval ast_time_create_by_unit ( unsigned long  val,
enum TIME_UNIT  unit 
)

Convert the given unit value, and create a timeval object from it.

Parameters
valThe value to convert to a timeval
unitThe time unit type of val
Returns
A timeval object

Definition at line 112 of file time.c.

References ast_time_create(), normalize_and_create(), TIME_UNIT_DAY, TIME_UNIT_HOUR, TIME_UNIT_MICROSECOND, TIME_UNIT_MILLISECOND, TIME_UNIT_MINUTE, TIME_UNIT_MONTH, TIME_UNIT_NANOSECOND, TIME_UNIT_SECOND, TIME_UNIT_WEEK, TIME_UNIT_YEAR, and time_unit_labels::unit.

Referenced by ast_rtp_interpret(), AST_TEST_DEFINE(), and ast_time_create_by_unit_str().

113 {
114  switch (unit) {
116  return normalize_and_create(val / 1000);
118  return normalize_and_create(val);
120  return normalize_and_create(val * 1000);
121  case TIME_UNIT_SECOND:
122  return ast_time_create(val, 0);
123  case TIME_UNIT_MINUTE:
124  return ast_time_create(val * 60, 0);
125  case TIME_UNIT_HOUR:
126  return ast_time_create(val * 3600, 0);
127  case TIME_UNIT_DAY:
128  return ast_time_create(val * 86400, 0);
129  case TIME_UNIT_WEEK:
130  return ast_time_create(val * 604800, 0);
131  case TIME_UNIT_MONTH:
132  /* Using Gregorian mean month - 30.436875 * 86400 */
133  return ast_time_create(val * 2629746, 0);
134  case TIME_UNIT_YEAR:
135  /* Using Gregorian year - 365.2425 * 86400 */
136  return ast_time_create(val * 31556952, 0);
137  default:
138  return ast_time_create(0, 0);
139  }
140 }
Definition: ast_expr2.c:325
static struct timeval normalize_and_create(unsigned long usec)
Create a timeval first onverting the given microsecond value into seconds and microseconds.
Definition: time.c:107
struct timeval ast_time_create(ast_time_t sec, ast_suseconds_t usec)
Create a timeval object initialized to given values.
Definition: time.c:94

◆ ast_time_create_by_unit_str()

struct timeval ast_time_create_by_unit_str ( unsigned long  val,
const char *  unit 
)

Convert the given unit value, and create a timeval object from it.

This will first attempt to convert the unit from a string to a TIME_UNIT enumeration. If that conversion fails then a zeroed out timeval object is returned.

Parameters
valThe value to convert to a timeval
unitThe time unit type of val
Returns
A timeval object

Definition at line 142 of file time.c.

References ast_time_create_by_unit(), ast_time_str_to_unit(), and time_unit_labels::unit.

Referenced by AST_TEST_DEFINE(), and handle_cli_rtcp_set_stats().

143 {
145 }
Definition: ast_expr2.c:325
struct timeval ast_time_create_by_unit(unsigned long val, enum TIME_UNIT unit)
Convert the given unit value, and create a timeval object from it.
Definition: time.c:112
enum TIME_UNIT ast_time_str_to_unit(const char *unit)
Convert a string to a time unit enumeration value.
Definition: time.c:65

◆ ast_time_str_to_unit()

enum TIME_UNIT ast_time_str_to_unit ( const char *  unit)

Convert a string to a time unit enumeration value.

This method attempts to be as flexible, and forgiving as possible when converting. In most cases the algorithm will match on the beginning of up to three strings (short, medium, long form). So that means if the given string at least starts with one of the form values it will match.

For example: us, usec, microsecond will all map to TIME_UNIT_MICROSECOND. So will uss, usecs, miscroseconds, or even microsecondvals

Matching is also not case sensitive.

Parameters
unitThe string to map to an enumeration
Returns
A time unit enumeration

Definition at line 65 of file time.c.

References MAX_UNIT_LABELS, TIME_UNIT_ERROR, time_unit_labels::unit, and unit_labels_size.

Referenced by AST_TEST_DEFINE(), and ast_time_create_by_unit_str().

66 {
67  size_t i, j;
68 
69  if (!unit) {
70  return TIME_UNIT_ERROR;
71  }
72 
73  for (i = 0; i < unit_labels_size; ++i) {
74  for (j = 0; j < MAX_UNIT_LABELS; ++j) {
75  /*
76  * A lazy pluralization check. If the given unit string at least starts
77  * with a label assume a match.
78  */
79  if (*unit_labels[i].values[j] && !strncasecmp(unit, unit_labels[i].values[j],
80  strlen(unit_labels[i].values[j]))) {
81  return unit_labels[i].unit;
82  }
83  }
84  }
85 
86  return TIME_UNIT_ERROR;
87 }
enum TIME_UNIT unit
Definition: time.c:46
#define MAX_UNIT_LABELS
Definition: time.c:43
const unsigned int unit_labels_size
Definition: time.c:63
static struct time_unit_labels unit_labels[]
Definition: time.c:50

◆ ast_time_tv_to_usec()

ast_suseconds_t ast_time_tv_to_usec ( const struct timeval *  tv)

Convert a timeval structure to microseconds.

Parameters
tvThe timeval to convert
Returns
The time in microseconds

Definition at line 89 of file time.c.

Referenced by ast_rtp_interpret(), and AST_TEST_DEFINE().

90 {
91  return tv->tv_sec * 1000000 + tv->tv_usec;
92 }

◆ ast_tsnow()

struct timespec ast_tsnow ( void  )

Returns current timespec. Meant to avoid calling ast_tvnow() just to create a timespec from the timeval it returns.

Definition at line 177 of file time.h.

Referenced by AST_TEST_DEFINE(), ast_tvnow(), query_set_test(), resolution_thread(), and wait_for_resolution().

220 {

◆ ast_tv()

struct timeval ast_tv ( ast_time_t  sec,
ast_suseconds_t  usec 
)

◆ ast_tvadd()

struct timeval ast_tvadd ( struct timeval  a,
struct timeval  b 
)

Returns the sum of two timevals a + b.

Definition at line 2283 of file extconf.c.

References a, b, ONE_MILLION, and tvfix().

Referenced by __get_from_jb(), acf_jabberreceive_read(), ast_audiohook_trigger_wait(), ast_bridge_channel_feature_digit(), ast_bridge_interval_hook(), ast_channel_cmpwhentohangup_tv(), ast_channel_setwhentohangup_tv(), ast_poll2(), ast_rtp_dtmf_begin(), ast_rtp_dtmf_end_with_duration(), ast_rtp_interpret(), ast_rtp_sendcng(), ast_sched_runq(), ast_sip_sched_task_get_times2(), ast_sip_schedule_task(), ast_smoother_read(), AST_TEST_DEFINE(), ast_translate(), bridge_builtin_set_limits(), bridge_channel_handle_interval(), bridge_sync_wait(), calc_rxstamp(), calc_timestamp(), cli_show_tasks(), cli_tps_ping(), conf_run(), consumer_should_stay(), dial_exec_full(), do_cdr(), do_timing(), expire_objects_from_cache(), handle_keepalive_message(), handler_wait_for_message(), hook_event_cb(), iax2_process_thread(), jb_get_and_deliver(), jitterbuffer_frame_get_ntp_timestamp(), make_deadline(), mb_poll_thread(), monmp3thread(), mp3_exec(), mwi_monitor_handler(), NBScat_exec(), register_aor_core(), rtp_deallocate_transport(), run_task(), sched_run(), sched_settime(), schedule_cache_expiration(), schedule_delivery(), set_timeout(), sla_process_timers(), smdi_message_wait(), sorcery_memory_cache_print_object(), subscription_persistence_update(), timeout_write(), user_event_wait_for_events(), and wait_for_stimulus().

2284 {
2285  /* consistency checks to guarantee usec in 0..999999 */
2286  a = tvfix(a);
2287  b = tvfix(b);
2288  a.tv_sec += b.tv_sec;
2289  a.tv_usec += b.tv_usec;
2290  if (a.tv_usec >= ONE_MILLION) {
2291  a.tv_sec++;
2292  a.tv_usec -= ONE_MILLION;
2293  }
2294  return a;
2295 }
static struct timeval tvfix(struct timeval a)
Definition: extconf.c:2267
static struct test_val b
#define ONE_MILLION
Definition: extconf.c:2262
static struct test_val a

◆ ast_tvcmp()

int ast_tvcmp ( struct timeval  _a,
struct timeval  _b 
)
inline

◆ ast_tvdiff_ms()

int64_t ast_tvdiff_ms ( struct timeval  end,
struct timeval  start 
)
inline

Computes the difference (in milliseconds) between two struct timeval instances.

Parameters
endend of the time period
startbeginning of the time period
Returns
the difference in milliseconds

Definition at line 98 of file time.h.

Referenced by __analog_handle_event(), __ast_read(), __get_from_jb(), acf_jabberreceive_read(), action_coreshowchannels(), ast_audiohook_write_frame(), ast_carefulwrite(), ast_cdr_format_var(), ast_channel_cmpwhentohangup_tv(), ast_channel_end_dtmf(), ast_channel_get_duration_ms(), ast_channel_get_up_time_ms(), ast_check_hangup(), ast_get_enum(), ast_odbc_direct_execute(), ast_odbc_prepare_and_execute(), ast_poll2(), ast_remaining_ms(), ast_rtp_interpret(), ast_rtp_read(), ast_sched_wait(), ast_sip_sched_task_get_times2(), AST_TEST_DEFINE(), ast_waitfor_nandfds(), audiohook_read_frame_both(), background_detect_exec(), bridge_agent_hold_heartbeat(), bridge_channel_feature_timeout(), bridge_channel_handle_feature_timeout(), bridge_channel_handle_interval(), bridge_channel_next_interval(), bridge_channel_settle_owed_events(), calc_rxstamp(), calc_timestamp(), calc_txpeerstamp(), calc_txstamp(), cdr_object_finalize(), cdr_object_get_billsec(), cdr_object_get_duration(), check_endpoint(), check_timer(), cli_show_channel(), cli_show_channels(), cli_subscription_expiry(), cli_unid_print_body(), conf_run(), contact_expire(), dahdi_handle_event(), dahdi_read(), destroy_trans(), disa_exec(), dundi_do_lookup(), dundi_do_precache(), dundi_lookup_internal(), dundi_precache_internal(), dundi_query_eid_internal(), expire_contact(), expire_objects_from_cache(), expire_requests(), fax_detect_framehook(), fax_gateway_framehook(), fix_peerts(), get_now(), handle_chanlist(), handle_cli_file_convert(), handle_cli_performance_test(), handle_cli_queue_test(), handle_keepalive_message(), handle_recordfile(), handle_response_peerpoke(), handle_timeout_trip(), hook_callback(), hook_event_cb(), http_callback(), isAnsweringMachine(), keypad_cfg_read(), limits_interval_playback(), measurenoise(), misdn_overlap_dial_task(), misdn_read(), monmp3thread(), mp3_exec(), NBScat_exec(), process_dtmf_rfc2833(), publish_msg(), purge_old_fn(), purge_old_messages(), receive_ademco_event(), receive_dtmf_digits(), registrar_add_contact(), retrans_pkt(), rtp_codecs_find_non_primary_dynamic_rx(), rtp_learning_rtp_seq_update(), run_task(), schedule_cache_expiration(), scheduler(), set_interval_hook(), setformat(), should_skip_dtmf(), should_trigger_dtmf_emulating(), sla_calc_station_timeouts(), sla_calc_trunk_timeouts(), sla_check_failed_station(), sla_check_station_delay(), smdi_message_wait(), softmix_bridge_write_control(), softmix_mixing_loop(), sorcery_memory_cache_print_object(), sorcery_memory_cache_thrash_retrieve(), sorcery_memory_cache_thrash_update(), speech_background(), sub_persistence_recreate(), subscription_invoke(), subscription_persistence_recreate(), talk_detect_audiohook_cb(), testloop(), timeout_read(), timing_test(), update_jbsched(), updates(), wait_for_answer(), wait_for_output(), and waituntil_exec().

105 {

◆ ast_tvdiff_sec()

int64_t ast_tvdiff_sec ( struct timeval  end,
struct timeval  start 
)
inline

Computes the difference (in seconds) between two struct timeval instances.

Parameters
endthe end of the time period
startthe beginning of the time period
Returns
the difference in seconds

Definition at line 64 of file time.h.

Referenced by acf_jabberreceive_read(), delete_old_messages(), generate_status(), get_channel_duration(), get_core_uptime_cb(), get_last_reload_cb(), purge_events(), transmit_audio(), transmit_t38(), and unload_module().

74 {

◆ ast_tvdiff_us()

int64_t ast_tvdiff_us ( struct timeval  end,
struct timeval  start 
)
inline

Computes the difference (in microseconds) between two struct timeval instances.

Parameters
endthe end of the time period
startthe beginning of the time period
Returns
the difference in microseconds

Definition at line 78 of file time.h.

Referenced by ast_media_index_update_for_file(), ast_merge_contexts_and_delete(), cdr_read_callback(), execute_cb(), handle_cli_sched_bench(), is_timed_out(), kqueue_timer_fd(), load_modules(), mysql_log(), odbc_log(), pgsql_log(), rtp_transport_wide_cc_feedback_produce(), sip_options_contact_status_notify_task(), tds_log(), and transmit_t38().

88 {

◆ ast_tveq()

int ast_tveq ( struct timeval  _a,
struct timeval  _b 
)
inline

Returns true if the two struct timeval arguments are equal.

Definition at line 138 of file time.h.

References NULL.

Referenced by ast_translate().

145 {

◆ ast_tvnow()

struct timeval ast_tvnow ( void  )

Returns current timeval. Meant to replace calls to gettimeofday().

Definition at line 150 of file time.h.

References AST_INLINE_API, and ast_tsnow().

Referenced by __analog_handle_event(), __analog_ss_thread(), __ast_answer(), __ast_channel_alloc_ap(), __ast_read(), __ast_request_and_dial(), __ast_rwlock_timedrdlock(), __ast_rwlock_timedwrlock(), __dahdi_exception(), __get_from_jb(), __manager_event_sessions_va(), __sip_reliable_xmit(), _sip_tcp_helper_thread(), acf_jabberreceive_read(), acf_strftime(), action_coreshowchannels(), action_login(), action_ping(), agent_alert(), agent_login_exec(), agent_run(), alarmreceiver_exec(), alloc_security_event_json_object(), analog_call(), analog_ss_thread(), app_send_end_msg(), app_update(), append_event(), ast_ari_asterisk_ping(), ast_audiohook_trigger_wait(), ast_audiohook_write_frame(), ast_bridge_channel_feature_digit(), ast_bridge_interval_hook(), ast_carefulwrite(), ast_cdr_fork(), ast_cdr_format_var(), ast_cdr_reset(), ast_cel_create_event(), ast_channel_cmpwhentohangup_tv(), ast_channel_end_dtmf(), ast_channel_get_duration_ms(), ast_channel_get_up_time_ms(), ast_channel_setwhentohangup_tv(), ast_check_hangup(), ast_check_timing(), ast_get_enum(), ast_http_send(), ast_iostream_write(), ast_localtime_wakeup_monitor(), ast_merge_contexts_and_delete(), ast_module_reload(), ast_odbc_direct_execute(), ast_odbc_prepare_and_execute(), ast_poll2(), ast_queue_log(), ast_recvtext(), ast_remaining_ms(), ast_rtp_dtmf_begin(), ast_rtp_dtmf_end_with_duration(), ast_rtp_interpret(), ast_rtp_read(), ast_rtp_rtcp_handle_nack(), ast_rtp_sendcng(), ast_say_date_with_format_da(), ast_say_date_with_format_de(), ast_say_date_with_format_en(), ast_say_date_with_format_es(), ast_say_date_with_format_fr(), ast_say_date_with_format_gr(), ast_say_date_with_format_he(), ast_say_date_with_format_is(), ast_say_date_with_format_it(), ast_say_date_with_format_nl(), ast_say_date_with_format_pl(), ast_say_date_with_format_pt(), ast_say_date_with_format_th(), ast_say_date_with_format_vi(), ast_say_date_with_format_zh(), ast_say_datetime_from_now_en(), ast_say_datetime_from_now_fr(), ast_say_datetime_from_now_he(), ast_say_datetime_from_now_ka(), ast_say_datetime_from_now_pt(), ast_sched_dump(), ast_sched_runq(), ast_sched_wait(), ast_sched_when(), ast_senddigit_begin(), ast_serializer_shutdown_group_join(), ast_sip_sched_task_get_times2(), ast_sip_schedule_task(), ast_sorcery_alloc(), ast_stun_request(), AST_TEST_DEFINE(), ast_translate(), ast_waitfor_nandfds(), ast_waitfordigit_full(), ast_websocket_write(), asterisk_daemon(), audiohook_read_frame_both(), authenticate(), background_detect_exec(), bridge_agent_hold_heartbeat(), bridge_base_init(), bridge_builtin_set_limits(), bridge_channel_feature_timeout(), bridge_channel_handle_feature_timeout(), bridge_channel_handle_interval(), bridge_channel_next_interval(), bridge_channel_settle_owed_events(), bridge_channel_write_frame(), bridge_sync_wait(), bucket_file_expired(), bucket_file_set_expiration(), build_device(), calc_rxstamp(), calc_timestamp(), calc_txstamp(), caldav_load_calendar(), calendar_busy_callback(), calendar_devstate_change(), calendar_write_exec(), callerid_genmsg(), canary_thread(), cb_events(), cdr_object_get_billsec(), cdr_object_get_duration(), cdr_read_callback(), check_endpoint(), check_expiration_thread(), check_timer(), cleanup(), cli_channel_print_body(), cli_channelstats_print_body(), cli_prompt(), cli_show_channel(), cli_show_channels(), cli_show_tasks(), cli_subscription_expiry(), cli_tps_ping(), cli_unid_print_body(), compare_timestamp(), conf_run(), consumer_should_stay(), consumer_wait_for(), consumer_wait_for_completion(), contact_expire(), create_dtmf_frame(), create_transaction(), dahdi_handle_event(), dahdi_read(), debug_check_frame_for_silence(), delete_old_messages(), destroy_trans(), dial_exec_full(), disa_exec(), disable_t38(), do_cdr(), do_refresh(), do_timing(), dundi_do_lookup(), dundi_do_precache(), dundi_lookup_internal(), dundi_precache_internal(), dundi_query_eid_internal(), endpoint_lookup(), evt_gen_auth_method_not_allowed(), evt_gen_chal_resp_failed(), evt_gen_chal_sent(), evt_gen_failed_acl(), evt_gen_inval_acct_id(), evt_gen_inval_password(), evt_gen_inval_transport(), evt_gen_load_avg(), evt_gen_mem_limit(), evt_gen_req_bad_format(), evt_gen_req_no_support(), evt_gen_req_not_allowed(), evt_gen_session_limit(), evt_gen_successful_auth(), evt_gen_unexpected_addr(), ewscal_load_calendar(), exchangecal_load_calendar(), expire_contact(), expire_objects_from_cache(), expire_requests(), fax_detect_framehook(), fax_detect_new(), fax_gateway_detect_t38(), fax_gateway_framehook(), fax_gateway_request_t38(), find_cache(), find_conf_realtime(), find_tpeer(), fix_peerts(), format_log_message_ap(), generate_parked_user(), generate_status(), generic_fax_exec(), get_channel_duration(), get_core_uptime_cb(), get_date(), get_ewscal_ids_for(), get_last_reload_cb(), get_lock(), get_tick_count(), handle_bridge_show_all(), handle_bridge_show_specific(), handle_chanlist(), handle_cli_file_convert(), handle_cli_iax2_show_cache(), handle_cli_performance_test(), handle_cli_queue_test(), handle_cli_rtcp_set_stats(), handle_cli_sched_bench(), handle_cli_test_locales(), handle_keepalive_message(), handle_recordfile(), handle_response_peerpoke(), handle_response_register(), handle_showcalls(), handle_showchan(), handle_showuptime(), handle_timeout_trip(), handler_wait_for_message(), has_complex_started(), hook_callback(), hook_event_cb(), http_callback(), iax2_datetime(), iax2_key_rotate(), iax2_process_thread(), iax2_trunk_queue(), ical_load_calendar(), iostream_read(), is_timed_out(), isAnsweringMachine(), jb_framedata_init(), keypad_cfg_read(), kqueue_timer_fd(), leave_voicemail(), limits_interval_playback(), link_topic_proxy(), load_config(), load_modules(), logging_on_tx_msg(), make_deadline(), make_logchannel(), mb_poll_thread(), measurenoise(), meetme_stasis_generate_msg(), memory_cache_stale_check_object(), message_received_handler(), mgcp_postrequest(), mid_test_sync(), misdn_overlap_dial_task(), misdn_read(), monitor_dial(), monmp3thread(), mp3_exec(), mwi_monitor_handler(), mysql_log(), NBScat_exec(), odbc_obj_connect(), parked_call_payload_from_parked_user(), payload_mapping_rx_clear_primary(), pbx_builtin_gotoiftime(), phone_call(), pjsip_history_entry_alloc(), pjsip_logger_write_to_pcap(), play_message_datetime(), process_text_line(), pthread_timer_set_rate(), public_key_is_expired(), publish_fully_booted(), publish_msg(), purge_events(), purge_old_messages(), qualify_peer(), queue_ringing_trunk(), realtime_common(), receive_ademco_event(), receive_dtmf_digits(), receivefax_t38_init(), record_exec(), register_aor_core(), registrar_add_contact(), retrans_pkt(), rt_extend_conf(), rtcp_message_handler(), rtp_deallocate_transport(), rtp_instance_parse_transport_wide_cc(), rtp_learning_rtp_seq_update(), rtp_learning_start(), rtp_raw_write(), run_task(), safe_sleep_conditional(), sched_run(), sched_settime(), schedule_cache_expiration(), schedule_calendar_event(), scheduler(), send_date_time(), send_date_time2(), send_date_time3(), send_device_state(), send_start_msg_snapshots(), sendfax_t38_init(), sendmail(), session_do(), set_channel_answer_time(), set_header(), set_interval_hook(), set_public_key_expiration(), set_timeout(), setformat(), should_skip_dtmf(), should_trigger_dtmf_emulating(), shutdown_waitfor_completion(), shutdown_waitfor_start(), sip_options_contact_callback_data_alloc(), sip_options_contact_status_notify_task(), sip_poke_peer(), skinny_session(), sla_calc_station_timeouts(), sla_calc_trunk_timeouts(), sla_check_failed_station(), sla_check_station_delay(), sla_create_failed_station(), sla_create_ringing_station(), sla_process_timers(), smdi_message_wait(), smdi_read(), sms_exec(), sms_handleincoming(), sms_handleincoming_proto2(), sms_readfile(), sms_writefile(), socket_process_meta(), softmix_bridge_write_control(), softmix_mixing_loop(), sorcery_memory_cache_ami_populate(), sorcery_memory_cache_print_object(), sorcery_memory_cache_thrash_retrieve(), sorcery_memory_cache_thrash_update(), sorcery_memory_cached_object_alloc(), speech_background(), stasis_app_exec(), stasis_message_create_full(), stasis_show_topic(), stir_shaken_add_iat(), store_config(), sub_persistence_recreate(), subscription_invoke(), subscription_persistence_recreate(), subscription_persistence_update(), talk_detect_audiohook_cb(), task_1(), task_wait(), testloop(), timeout_read(), timeout_write(), timing_read(), timing_test(), transmit_audio(), transmit_definetimedate(), transmit_notify_request_with_callerid(), transmit_t38(), unload_module(), update_caldav(), update_exchangecal(), update_jbsched(), user_event_wait_for_events(), verify_mock_cdr_record(), vmu_tm(), wait_for_answer(), wait_for_channel_callback(), wait_for_completion(), wait_for_complex_completion(), wait_for_complex_start(), wait_for_device_state_updates(), wait_for_empty_notice(), wait_for_hook(), wait_for_output(), wait_for_stimulus(), wait_for_task_pushed(), wait_until_thread_state(), wait_until_thread_state_task_pushed(), waitforcond_exec(), waitforring_exec(), waituntil_exec(), worker_idle(), write_history(), write_metadata(), and xmpp_pak_message().

159 {

◆ ast_tvsub()

struct timeval ast_tvsub ( struct timeval  a,
struct timeval  b 
)

Returns the difference of two timevals a - b.

Definition at line 2298 of file extconf.c.

References a, ast_mark_lock_failed(), b, ONE_MILLION, and tvfix().

Referenced by action_login(), ast_poll2(), ast_sched_dump(), AST_TEST_DEFINE(), ast_translate(), ast_waitfor_nandfds(), calc_rxstamp(), calc_timestamp(), cli_tps_ping(), conf_run(), debug_check_frame_for_silence(), handle_showcalls(), handle_showuptime(), jitterbuffer_frame_get_ntp_timestamp(), memory_cache_stale_check_object(), object_stale_callback(), and publish_fully_booted().

2299 {
2300  /* consistency checks to guarantee usec in 0..999999 */
2301  a = tvfix(a);
2302  b = tvfix(b);
2303  a.tv_sec -= b.tv_sec;
2304  a.tv_usec -= b.tv_usec;
2305  if (a.tv_usec < 0) {
2306  a.tv_sec-- ;
2307  a.tv_usec += ONE_MILLION;
2308  }
2309  return a;
2310 }
static struct timeval tvfix(struct timeval a)
Definition: extconf.c:2267
static struct test_val b
#define ONE_MILLION
Definition: extconf.c:2262
static struct test_val a

◆ ast_tvzero()

int ast_tvzero ( const struct timeval  t)
inline

◆ typeof()

typedef typeof ( dummy_tv_var_for_types.  tv_sec)

Variable Documentation

◆ dummy_tv_var_for_types

struct timeval dummy_tv_var_for_types