Changeset bd41ac52 in mainline for uspace/drv
- Timestamp:
- 2018-08-25T22:21:25Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- cca80a2
- Parents:
- e2625b1a
- Location:
- uspace/drv
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/uhci_rh.c
re2625b1a rbd41ac52 34 34 #include <macros.h> 35 35 #include <mem.h> 36 #include < sys/time.h>36 #include <time.h> 37 37 38 38 #include <usb/debug.h> -
uspace/drv/bus/usb/usbdiag/tests.c
re2625b1a rbd41ac52 72 72 uint32_t transfer_count = 0; 73 73 74 struct time valstart_time, final_time, stop_time;75 get timeofday(&start_time, NULL);76 get timeofday(&stop_time, NULL);77 78 t v_add_diff(&stop_time, params->min_duration * 1000);79 get timeofday(&final_time, NULL);80 81 while (!t v_gt(&final_time, &stop_time)) {74 struct timespec start_time, final_time, stop_time; 75 getuptime(&start_time); 76 getuptime(&stop_time); 77 78 ts_add_diff(&stop_time, MSEC2NSEC(params->min_duration)); 79 getuptime(&final_time); 80 81 while (!ts_gt(&final_time, &stop_time)) { 82 82 ++transfer_count; 83 83 … … 121 121 } 122 122 123 get timeofday(&final_time, NULL);124 } 125 126 usbdiag_dur_t in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +127 ((final_time.tv_sec - start_time.tv_sec) * 1000);123 getuptime(&final_time); 124 } 125 126 usbdiag_dur_t in_duration = NSEC2MSEC(final_time.tv_nsec - start_time.tv_nsec) + 127 SEC2MSEC(final_time.tv_sec - start_time.tv_sec); 128 128 129 129 usb_log_info("Test on %s IN endpoint completed in %lu ms.", usb_str_transfer_type(pipe->desc.transfer_type), in_duration); … … 170 170 uint32_t transfer_count = 0; 171 171 172 struct time valstart_time, final_time, stop_time;173 get timeofday(&start_time, NULL);174 get timeofday(&stop_time, NULL);175 176 t v_add_diff(&stop_time, params->min_duration * 1000);177 get timeofday(&final_time, NULL);178 179 while (!t v_gt(&final_time, &stop_time)) {172 struct timespec start_time, final_time, stop_time; 173 getuptime(&start_time); 174 getuptime(&stop_time); 175 176 ts_add_diff(&stop_time, MSEC2NSEC(params->min_duration)); 177 getuptime(&final_time); 178 179 while (!ts_gt(&final_time, &stop_time)) { 180 180 ++transfer_count; 181 181 … … 186 186 } 187 187 188 get timeofday(&final_time, NULL);189 } 190 191 usbdiag_dur_t in_duration = ((final_time.tv_usec - start_time.tv_usec) / 1000) +192 ((final_time.tv_sec - start_time.tv_sec) * 1000);188 getuptime(&final_time); 189 } 190 191 usbdiag_dur_t in_duration = NSEC2MSEC(final_time.tv_nsec - start_time.tv_nsec) + 192 SEC2MSEC(final_time.tv_sec - start_time.tv_sec); 193 193 194 194 usb_log_info("Test on %s OUT endpoint completed in %ld ms.", usb_str_transfer_type(pipe->desc.transfer_type), in_duration); -
uspace/drv/bus/usb/vhc/hub/hub.c
re2625b1a rbd41ac52 64 64 static void clear_port_status_change(hub_port_t *, uint16_t); 65 65 static errno_t set_port_state_delayed_fibril(void *); 66 static void set_port_state_delayed(hub_t *, size_t, suseconds_t,67 hub_port_state_t , hub_port_state_t);66 static void set_port_state_delayed(hub_t *, size_t, usec_t, hub_port_state_t, 67 hub_port_state_t); 68 68 69 69 /** Convert hub port state to a char. */ … … 444 444 struct delay_port_state_change { 445 445 /** Delay in microseconds. */ 446 suseconds_t delay;446 usec_t delay; 447 447 /** Old state of the port. */ 448 448 hub_port_state_t old_state; … … 496 496 */ 497 497 static void set_port_state_delayed(hub_t *hub, size_t port_index, 498 suseconds_t delay_time_ms,499 hub_port_state_t old_state, hub_port_state_tnew_state)498 usec_t delay_time_ms, hub_port_state_t old_state, 499 hub_port_state_t new_state) 500 500 { 501 501 struct delay_port_state_change *change = … … 504 504 change->hub = hub; 505 505 change->port = port_index; 506 change->delay = delay_time_ms * 1000;506 change->delay = MSEC2USEC(delay_time_ms); 507 507 change->old_state = old_state; 508 508 change->new_state = new_state; -
uspace/drv/bus/usb/xhci/hc.c
re2625b1a rbd41ac52 229 229 hc->max_slots = XHCI_REG_RD(hc->cap_regs, XHCI_CAP_MAX_SLOTS); 230 230 231 struct time val tv;232 getuptime(&t v);233 hc->wrap_time = tv.tv_sec * 1000000 + tv.tv_usec;231 struct timespec ts; 232 getuptime(&ts); 233 hc->wrap_time = SEC2USEC(ts.tv_sec) + NSEC2USEC(ts.tv_nsec); 234 234 hc->wrap_count = 0; 235 235 … … 591 591 static errno_t xhci_handle_mfindex_wrap_event(xhci_hc_t *hc, xhci_trb_t *trb) 592 592 { 593 struct time val tv;594 getuptime(&t v);595 usb_log_debug("Microframe index wrapped (@%l u.%li, %" PRIu64 " total).",596 t v.tv_sec, tv.tv_usec, hc->wrap_count);597 hc->wrap_time = ((uint64_t) tv.tv_sec) * 1000000 + ((uint64_t) tv.tv_usec);593 struct timespec ts; 594 getuptime(&ts); 595 usb_log_debug("Microframe index wrapped (@%lld.%lld, %" PRIu64 " total).", 596 ts.tv_sec, NSEC2USEC(ts.tv_nsec), hc->wrap_count); 597 hc->wrap_time = SEC2USEC(ts.tv_sec) + NSEC2USEC(ts.tv_nsec); 598 598 ++hc->wrap_count; 599 599 return EOK; -
uspace/drv/bus/usb/xhci/isoch.c
re2625b1a rbd41ac52 113 113 { 114 114 xhci_isoch_t *const isoch = ep->isoch; 115 const suseconds_t delay = isoch->buffer_count * ep->interval * 125 +115 const usec_t delay = isoch->buffer_count * ep->interval * 125 + 116 116 RESET_TIMER_DELAY; 117 117 … … 210 210 static inline uint64_t get_system_time() 211 211 { 212 struct time val tv;213 getuptime(&t v);214 return ((uint64_t) tv.tv_sec) * 1000000 + ((uint64_t) tv.tv_usec);212 struct timespec ts; 213 getuptime(&ts); 214 return SEC2USEC(ts.tv_sec) + NSEC2USEC(ts.tv_nsec); 215 215 } 216 216 … … 314 314 while (isoch->transfers[isoch->hw_enqueue].state == ISOCH_FILLED) { 315 315 xhci_isoch_transfer_t *const it = &isoch->transfers[isoch->hw_enqueue]; 316 suseconds_t delay;316 usec_t delay; 317 317 318 318 assert(it->state == ISOCH_FILLED); … … 324 324 case WINDOW_TOO_SOON: 325 325 delay = wd.offset * 125; 326 usb_log_debug("[isoch] delaying feeding buffer %zu for %l dus",326 usb_log_debug("[isoch] delaying feeding buffer %zu for %lldus", 327 327 it - isoch->transfers, delay); 328 328 fibril_timer_set_locked(isoch->feeding_timer, delay, … … 400 400 while (isoch->transfers[isoch->enqueue].state <= ISOCH_FILLED) { 401 401 xhci_isoch_transfer_t *const it = &isoch->transfers[isoch->enqueue]; 402 suseconds_t delay;402 usec_t delay; 403 403 404 404 /* IN buffers are "filled" with free space */ … … 416 416 /* Not allowed to feed yet. Defer to later. */ 417 417 delay = wd.offset * 125; 418 usb_log_debug("[isoch] delaying feeding buffer %zu for %l dus",418 usb_log_debug("[isoch] delaying feeding buffer %zu for %lldus", 419 419 it - isoch->transfers, delay); 420 420 fibril_timer_set_locked(isoch->feeding_timer, delay, -
uspace/drv/nic/e1k/e1k.c
re2625b1a rbd41ac52 327 327 } 328 328 329 static uint16_t e1000_calculate_itr_interval_from_usecs( suseconds_t useconds)329 static uint16_t e1000_calculate_itr_interval_from_usecs(usec_t useconds) 330 330 { 331 331 return useconds * 4; … … 1299 1299 } 1300 1300 1301 /** Calculates ITR register interrupt from time valstructure1301 /** Calculates ITR register interrupt from timespec structure 1302 1302 * 1303 1303 * @param period Period 1304 1304 * 1305 1305 */ 1306 static uint16_t e1000_calculate_itr_interval(const struct time val*period)1306 static uint16_t e1000_calculate_itr_interval(const struct timespec *period) 1307 1307 { 1308 1308 // TODO: use also tv_sec 1309 return e1000_calculate_itr_interval_from_usecs( period->tv_usec);1309 return e1000_calculate_itr_interval_from_usecs(NSEC2USEC(period->tv_nsec)); 1310 1310 } 1311 1311 … … 1321 1321 */ 1322 1322 static errno_t e1000_poll_mode_change(nic_t *nic, nic_poll_mode_t mode, 1323 const struct time val*period)1323 const struct timespec *period) 1324 1324 { 1325 1325 assert(nic); … … 2182 2182 goto err_rx_structure; 2183 2183 2184 struct time valperiod;2184 struct timespec period; 2185 2185 period.tv_sec = 0; 2186 period.tv_ usec = E1000_DEFAULT_INTERRUPT_INTERVAL_USEC;2186 period.tv_nsec = USEC2NSEC(E1000_DEFAULT_INTERRUPT_INTERVAL_USEC); 2187 2187 rc = nic_report_poll_mode(nic, NIC_POLL_PERIODIC, &period); 2188 2188 if (rc != EOK) -
uspace/drv/nic/rtl8139/driver.c
re2625b1a rbd41ac52 313 313 314 314 static errno_t rtl8139_poll_mode_change(nic_t *nic_data, nic_poll_mode_t mode, 315 const struct time val*period);315 const struct timespec *period); 316 316 static void rtl8139_poll(nic_t *nic_data); 317 317 … … 2068 2068 */ 2069 2069 static errno_t rtl8139_poll_mode_change(nic_t *nic_data, nic_poll_mode_t mode, 2070 const struct time val*period)2070 const struct timespec *period) 2071 2071 { 2072 2072 assert(nic_data); -
uspace/drv/nic/rtl8139/general.c
re2625b1a rbd41ac52 85 85 */ 86 86 errno_t rtl8139_timer_act_init(rtl8139_timer_act_t *ta, uint32_t timer_freq, 87 const struct time val*time)87 const struct timespec *time) 88 88 { 89 89 if (!ta || timer_freq == 0 || !time) … … 95 95 ta->full_val = seconds_in_reg * tics_per_ms * 1000; 96 96 97 struct time valremains = *time;97 struct timespec remains = *time; 98 98 ta->full_skips = remains.tv_sec / seconds_in_reg; 99 99 remains.tv_sec = remains.tv_sec % seconds_in_reg; 100 100 101 if ( remains.tv_usec> RTL8139_USEC_IN_SEC) {102 remains.tv_sec += remains.tv_usec/ RTL8139_USEC_IN_SEC;103 remains.tv_ usec = remains.tv_usec% RTL8139_USEC_IN_SEC;101 if (NSEC2USEC(remains.tv_nsec) > RTL8139_USEC_IN_SEC) { 102 remains.tv_sec += NSEC2USEC(remains.tv_nsec) / RTL8139_USEC_IN_SEC; 103 remains.tv_nsec = NSEC2USEC(remains.tv_nsec) % RTL8139_USEC_IN_SEC; 104 104 105 105 /* it can be increased above seconds_in_reg again */ … … 108 108 } 109 109 110 ta->last_val = remains.tv_sec * 1000 + remains.tv_usec / 1000;110 ta->last_val = SEC2MSEC(remains.tv_sec) + NSEC2MSEC(remains.tv_nsec); 111 111 ta->last_val *= tics_per_ms; 112 112 -
uspace/drv/nic/rtl8139/general.h
re2625b1a rbd41ac52 36 36 37 37 #include <stddef.h> 38 #include <stdint.h> 38 39 #include <time.h> 39 40 … … 62 63 size_t); 63 64 extern errno_t rtl8139_timer_act_init(rtl8139_timer_act_t *, uint32_t, 64 const struct time val*);65 const struct timespec *); 65 66 extern int rtl8139_timer_act_step(rtl8139_timer_act_t *, uint32_t *); 66 67 -
uspace/drv/time/cmos-rtc/cmos-rtc.c
re2625b1a rbd41ac52 75 75 int clients_connected; 76 76 /** time at which the system booted */ 77 struct time valboot_time;77 struct timespec boot_time; 78 78 } rtc_t; 79 79 … … 204 204 205 205 rtc->boot_time.tv_sec = 0; 206 rtc->boot_time.tv_ usec = 0;206 rtc->boot_time.tv_nsec = 0; 207 207 rtc->clients_connected = 0; 208 208 … … 331 331 */ 332 332 333 struct time valcurtime;333 struct timespec curtime; 334 334 335 335 getuptime(&curtime); 336 t v_add(&curtime, &rtc->boot_time);336 ts_add(&curtime, &rtc->boot_time); 337 337 fibril_mutex_unlock(&rtc->mutex); 338 338 339 return time_t v2tm(&curtime, t);339 return time_ts2tm(&curtime, t); 340 340 } 341 341 … … 346 346 } 347 347 348 /* Microseconds are below RTC's resolution, assume 0. */349 t->tm_ usec = 0;348 /* Nanoseconds are below RTC's resolution, assume 0. */ 349 t->tm_nsec = 0; 350 350 351 351 /* now read the registers */ … … 419 419 result = EINVAL; 420 420 else { 421 struct time valuptime;421 struct timespec uptime; 422 422 423 423 getuptime(&uptime); 424 424 rtc->boot_time.tv_sec = r; 425 rtc->boot_time.tv_ usec = t->tm_usec; /* normalized */426 t v_sub(&rtc->boot_time, &uptime);425 rtc->boot_time.tv_nsec = t->tm_nsec; /* normalized */ 426 ts_sub(&rtc->boot_time, &uptime); 427 427 result = EOK; 428 428 } … … 445 445 bool bcd_mode; 446 446 time_t norm_time; 447 struct time valuptime;448 struct time valntv;447 struct timespec uptime; 448 struct timespec ntv; 449 449 int reg_b; 450 450 int reg_a; … … 457 457 458 458 ntv.tv_sec = norm_time; 459 ntv.tv_ usec = t->tm_usec;459 ntv.tv_nsec = t->tm_nsec; 460 460 getuptime(&uptime); 461 461 462 if (t v_gteq(&uptime, &ntv)) {462 if (ts_gteq(&uptime, &ntv)) { 463 463 /* This is not acceptable */ 464 464 return EINVAL; … … 474 474 /* boot_time must be recomputed */ 475 475 rtc->boot_time.tv_sec = 0; 476 rtc->boot_time.tv_ usec = 0;476 rtc->boot_time.tv_nsec = 0; 477 477 478 478 /* Detect the RTC epoch */
Note:
See TracChangeset
for help on using the changeset viewer.