Searched refs:td (Results 26 - 50 of 1053) sorted by relevance

1234567891011>>

/freebsd-11-stable/sys/arm/arm/
H A Dvm_machdep.c166 cpu_thread_swapin(struct thread *td) argument
171 cpu_thread_swapout(struct thread *td) argument
176 cpu_set_syscall_retval(struct thread *td, int error) argument
184 frame = td->td_frame;
198 if (td->td_proc->p_sysent->sv_mask)
199 code &= td->td_proc->p_sysent->sv_mask;
208 frame->tf_r1 = td->td_retval[0];
210 frame->tf_r0 = td->td_retval[0];
211 frame->tf_r1 = td->td_retval[1];
244 cpu_copy_thread(struct thread *td, struc argument
268 cpu_set_upcall(struct thread *td, void (*entry)(void *), void *arg, stack_t *stack) argument
280 cpu_set_user_tls(struct thread *td, void *tls_base) argument
299 cpu_thread_exit(struct thread *td) argument
304 cpu_thread_alloc(struct thread *td) argument
323 cpu_thread_free(struct thread *td) argument
328 cpu_thread_clean(struct thread *td) argument
339 cpu_fork_kthread_handler(struct thread *td, void (*func)(void *), void *arg) argument
357 cpu_exit(struct thread *td) argument
[all...]
H A Dsyscall.c102 cpu_fetch_syscall_args(struct thread *td) argument
109 sa = &td->td_sa;
110 sa->code = td->td_frame->tf_r7;
111 ap = &td->td_frame->tf_r0;
120 p = td->td_proc;
131 error = copyin((void *)td->td_frame->tf_usr_sp, sa->args +
135 td->td_retval[0] = 0;
136 td->td_retval[1] = 0;
144 syscall(struct thread *td, struct trapframe *frame) argument
148 td
159 struct thread *td = curthread; local
[all...]
/freebsd-11-stable/sys/i386/ibcs2/
H A Dibcs2_socksys.c61 ibcs2_socksys(struct thread *td, struct ibcs2_socksys_args *uap) argument
82 return sys_accept(td, passargs);
84 return sys_bind(td, passargs);
86 return sys_connect(td, passargs);
88 return sys_getpeername(td, passargs);
90 return sys_getsockname(td, passargs);
92 return sys_getsockopt(td, passargs);
94 return sys_listen(td, passargs);
99 return sys_recvfrom(td, passargs);
104 return sys_sendto(td, passarg
143 ibcs2_getipdomainname(struct thread *td, struct getipdomainname_args *uap) argument
166 ibcs2_setipdomainname(struct thread *td, struct setipdomainname_args *uap) argument
[all...]
H A Dibcs2_msg.c45 ibcs2_getmsg(td, uap)
46 struct thread *td;
53 ibcs2_putmsg(td, uap)
54 struct thread *td;
/freebsd-11-stable/sys/amd64/include/
H A Dproc.h84 struct thread *td = curthread; \
85 (total) = td->td_kstack_pages * PAGE_SIZE; \
86 (used) = (char *)td->td_kstack + \
87 td->td_kstack_pages * PAGE_SIZE - \
88 (char *)&td; \
94 int sysarch_ldt(struct thread *td, struct sysarch_args *uap, int uap_space);
95 int amd64_set_ldt_data(struct thread *td, int start, int num,
/freebsd-11-stable/sys/ddb/
H A Ddb_ps.c53 static void dumpthread(volatile struct proc *p, volatile struct thread *td,
107 volatile struct thread *td; local
158 FOREACH_THREAD_IN_PROC(p, td) {
159 if (td->td_state == TDS_RUNNING ||
160 td->td_state == TDS_RUNQ ||
161 td->td_state == TDS_CAN_RUN)
163 if (TD_ON_LOCK(td))
165 if (TD_IS_SLEEPING(td)) {
166 if (!(td->td_flags & TDF_SINTR))
171 if (TD_AWAITING_INTR(td))
250 dumpthread(volatile struct proc *p, volatile struct thread *td, int all) argument
336 struct thread *td; local
433 struct thread *td; local
493 struct thread *td; local
[all...]
/freebsd-11-stable/sys/kern/
H A Dkern_switch.c155 choosethread_panic(struct thread *td) argument
163 if (((td->td_proc->p_flag & P_SYSTEM) == 0 &&
164 (td->td_flags & TDF_INPANIC) == 0)) {
166 TD_SET_CAN_RUN(td);
167 td = sched_choose();
171 TD_SET_RUNNING(td);
172 return (td);
178 struct thread *td; local
180 td = sched_choose();
183 return (choosethread_panic(td));
202 struct thread *td; local
213 struct thread *td; local
366 runq_add(struct runq *rq, struct thread *td, int flags) argument
385 runq_add_pri(struct runq *rq, struct thread *td, u_char pri, int flags) argument
431 struct thread *td; local
473 struct thread *td; local
493 struct thread *td; local
515 runq_remove(struct runq *rq, struct thread *td) argument
522 runq_remove_idx(struct runq *rq, struct thread *td, u_char *idx) argument
[all...]
H A Dsched_ule.c82 #define TS_NAME_LEN (MAXCOMLEN + sizeof(" td ") + sizeof(__XSTRING(UINT_MAX)))
109 #define THREAD_CAN_MIGRATE(td) ((td)->td_pinned == 0)
110 #define THREAD_CAN_SCHED(td, cpu) \
111 CPU_ISSET((cpu), &(td)->td_cpuset->cs_mask)
370 struct thread *td; local
382 TAILQ_FOREACH(td, rqh, td_runq) {
384 td, td->td_name, td
458 tdq_runq_add(struct tdq *tdq, struct thread *td, int flags) argument
509 tdq_runq_rem(struct tdq *tdq, struct thread *td) argument
535 tdq_load_add(struct tdq *tdq, struct thread *td) argument
553 tdq_load_rem(struct tdq *tdq, struct thread *td) argument
599 struct thread *td; local
920 struct thread *td; local
949 struct thread *td; local
1066 tdq_notify(struct tdq *tdq, struct thread *td) argument
1108 struct thread *td, *first; local
1152 struct thread *td; local
1179 struct thread *td; local
1195 sched_setcpu(struct thread *td, int cpu, int flags) argument
1240 sched_pickcpu(struct thread *td, int flags) argument
1373 struct thread *td; local
1526 sched_interact_score(struct thread *td) argument
1566 sched_priority(struct thread *td) argument
1618 sched_interact_update(struct thread *td) argument
1663 sched_interact_fork(struct thread *td) argument
1742 sched_thread_priority(struct thread *td, u_char prio) argument
1797 sched_lend_prio(struct thread *td, u_char prio) argument
1813 sched_unlend_prio(struct thread *td, u_char prio) argument
1833 sched_prio(struct thread *td, u_char prio) argument
1863 sched_user_prio(struct thread *td, u_char prio) argument
1873 sched_lend_user_prio(struct thread *td, u_char prio) argument
1974 sched_switch_migrate(struct tdq *tdq, struct thread *td, int flags) argument
2011 thread_unblock_switch(struct thread *td, struct mtx *mtx) argument
2024 sched_switch(struct thread *td, struct thread *newtd, int flags) argument
2070 ("Thread %p shouldn't migrate", td)); local
2162 struct thread *td; local
2179 sched_sleep(struct thread *td, int prio) argument
2200 sched_wakeup(struct thread *td) argument
2231 sched_fork(struct thread *td, struct thread *child) argument
2250 sched_fork_thread(struct thread *td, struct thread *child) argument
2295 sched_class(struct thread *td, int class) argument
2310 struct thread *td; local
2326 sched_exit_thread(struct thread *td, struct thread *child) argument
2344 sched_preempt(struct thread *td) argument
2373 sched_userret(struct thread *td) argument
2390 tdq_setlowpri(TDQ_SELF(), td); local
2400 sched_clock(struct thread *td) argument
2495 struct thread *td; local
2515 sched_setpreempt(struct thread *td) argument
2541 tdq_add(struct tdq *tdq, struct thread *td, int flags) argument
2563 sched_add(struct thread *td, int flags) argument
2616 sched_rem(struct thread *td) argument
2639 sched_pctcpu(struct thread *td) argument
2665 sched_affinity(struct thread *td) argument
2696 sched_bind(struct thread *td, int cpu) argument
2705 KASSERT(THREAD_CAN_MIGRATE(td), ("%p must be migratable", td)); local
2719 sched_unbind(struct thread *td) argument
2733 sched_is_bound(struct thread *td) argument
2743 sched_relinquish(struct thread *td) argument
2794 struct thread *td; local
2877 sched_throw(struct thread *td) argument
2907 sched_fork_exit(struct thread *td) argument
2935 sched_tdname(struct thread *td) argument
2952 sched_clear_tdname(struct thread *td) argument
[all...]
H A Dkern_kthread.c86 struct thread *td; local
106 td = FIRST_THREAD_IN_PROC(p2);
108 td->td_pflags |= TDP_KTHREAD;
120 vsnprintf(td->td_name, sizeof(td->td_name), fmt, ap);
123 sched_clear_tdname(td);
127 cpu_fork_kthread_handler(td, func, arg);
130 cpuset_setthread(td->td_tid, cpuset_root);
131 thread_lock(td);
132 TD_SET_CAN_RUN(td);
147 struct thread *td; local
327 struct thread *td; local
359 kthread_suspend(struct thread *td, int timo) argument
390 kthread_resume(struct thread *td) argument
421 struct thread *td; local
450 struct thread *td; local
[all...]
H A Dkern_synch.c131 struct thread *td; local
138 td = curthread;
139 p = td->td_proc;
141 if (KTRPOINT(td, KTR_CSW))
149 KASSERT(ident != NULL && TD_IS_RUNNING(td), ("msleep"));
158 if (SCHEDULER_STOPPED_TD(td)) {
166 KASSERT(!TD_ON_SLEEPQ(td), ("recursive sleep"));
178 td->td_tid, p->p_pid, td->td_name, wmesg, ident);
197 * stopped, then td wil
235 struct thread *td; local
401 struct thread *td; local
471 setrunnable(struct thread *td) argument
560 struct thread *td; local
578 sys_yield(struct thread *td, struct yield_args *uap) argument
[all...]
/freebsd-11-stable/lib/libthr/thread/
H A Dthr_affinity.c42 _pthread_setaffinity_np(pthread_t td, size_t cpusetsize, const cpuset_t *cpusetp) argument
48 if (td == curthread) {
53 } else if ((error = _thr_find_thread(curthread, td, 0)) == 0) {
54 tid = TID(td);
59 THR_THREAD_UNLOCK(curthread, td);
65 _pthread_getaffinity_np(pthread_t td, size_t cpusetsize, cpuset_t *cpusetp) argument
71 if (td == curthread) {
76 } else if ((error = _thr_find_thread(curthread, td, 0)) == 0) {
77 tid = TID(td);
82 THR_THREAD_UNLOCK(curthread, td);
[all...]
H A Dthr_sleepq.c116 _sleepq_add(void *wchan, struct pthread *td) argument
124 SLIST_INSERT_HEAD(&sq->sq_freeq, td->sleepqueue, sq_flink);
126 sq = td->sleepqueue;
131 td->sleepqueue = NULL;
132 td->wchan = wchan;
134 TAILQ_INSERT_HEAD(&sq->sq_blocked, td, wle);
136 TAILQ_INSERT_TAIL(&sq->sq_blocked, td, wle);
140 _sleepq_remove(struct sleepqueue *sq, struct pthread *td) argument
144 TAILQ_REMOVE(&sq->sq_blocked, td, wle);
147 td
162 struct pthread *td; local
[all...]
/freebsd-11-stable/sys/arm64/arm64/
H A Dvm_machdep.c131 cpu_thread_swapin(struct thread *td) argument
136 cpu_thread_swapout(struct thread *td) argument
141 cpu_set_syscall_retval(struct thread *td, int error) argument
145 frame = td->td_frame;
149 frame->tf_x[0] = td->td_retval[0];
150 frame->tf_x[1] = td->td_retval[1];
173 cpu_copy_thread(struct thread *td, struct thread *td0) argument
175 bcopy(td0->td_frame, td->td_frame, sizeof(struct trapframe));
176 bcopy(td0->td_pcb, td->td_pcb, sizeof(struct pcb));
178 td
194 cpu_set_upcall(struct thread *td, void (*entry)(void *), void *arg, stack_t *stack) argument
205 cpu_set_user_tls(struct thread *td, void *tls_base) argument
221 cpu_thread_exit(struct thread *td) argument
226 cpu_thread_alloc(struct thread *td) argument
236 cpu_thread_free(struct thread *td) argument
241 cpu_thread_clean(struct thread *td) argument
252 cpu_fork_kthread_handler(struct thread *td, void (*func)(void *), void *arg) argument
263 cpu_exit(struct thread *td) argument
[all...]
H A Dtrap.c83 call_trapsignal(struct thread *td, int sig, int code, void *addr) argument
91 trapsignal(td, &ksi);
95 cpu_fetch_syscall_args(struct thread *td) argument
103 p = td->td_proc;
104 ap = td->td_frame->tf_x;
105 sa = &td->td_sa;
107 sa->code = td->td_frame->tf_x[8];
126 td->td_retval[0] = 0;
127 td->td_retval[1] = 0;
135 svc_handler(struct thread *td, struc argument
149 data_abort(struct thread *td, struct trapframe *frame, uint64_t esr, uint64_t far, int lower) argument
271 do_el1h_sync(struct thread *td, struct trapframe *frame) argument
332 struct thread *td; local
340 do_el0_sync(struct thread *td, struct trapframe *frame) argument
[all...]
/freebsd-11-stable/lib/libc/tests/nss/
H A Dtestutil.h58 #define TEST_DATA_INIT(ent, td, clonef, freef)\
59 __##ent##_test_data_init(td, clonef, freef)
60 #define TEST_DATA_DESTROY(ent, td) __##ent##_test_data_destroy(td)
61 #define TEST_DATA_APPEND(ent, td, d) __##ent##_test_data_append(td, d)
62 #define TEST_DATA_FOREACH(ent, td, f, mdata)\
63 __##ent##_test_data_foreach(td, f, mdata)
66 #define TEST_DATA_FIND(ent, td, d, fcmp, mdata)\
67 __##ent##_test_data_find(td,
[all...]
/freebsd-11-stable/sys/mips/cavium/usb/
H A Doctusb.c91 struct octusb_td *td; member in struct:octusb_std_temp
144 octusb_host_alloc_endpoint(struct octusb_td *td) argument
149 if (td->qh->fixup_pending)
152 if (td->qh->ep_allocated)
156 sc = td->qh->sc;
159 &sc->sc_port[td->qh->root_port_index].state,
161 td->qh->dev_addr,
162 td->qh->ep_num & UE_ADDR,
163 octusb_convert_speed(td->qh->dev_speed),
164 td
196 octusb_host_free_endpoint(struct octusb_td *td) argument
223 struct octusb_td *td; local
252 octusb_host_control_header_tx(struct octusb_td *td) argument
322 octusb_host_control_data_tx(struct octusb_td *td) argument
352 octusb_host_control_data_rx(struct octusb_td *td) argument
381 octusb_host_control_status_tx(struct octusb_td *td) argument
432 octusb_non_control_data_tx(struct octusb_td *td) argument
529 octusb_non_control_data_rx(struct octusb_td *td) argument
650 struct octusb_td *td; local
694 struct octusb_td *td; local
975 struct octusb_td *td; local
999 struct octusb_td *td; local
1142 struct octusb_td *td; local
1835 struct octusb_td *td; local
[all...]
/freebsd-11-stable/sys/amd64/amd64/
H A Dvm_machdep.c91 get_pcb_user_save_td(struct thread *td) argument
95 p = td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
111 get_pcb_td(struct thread *td) argument
115 p = td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
276 cpu_fork_kthread_handler(struct thread *td, void (*func)(void *), void *arg) argument
282 td->td_pcb->pcb_r12 = (long) func; /* function */
283 td->td_pcb->pcb_rbx = (long) arg; /* first arg */
287 cpu_exit(struct thread *td) argument
301 cpu_thread_exit(struct thread *td) argument
320 cpu_thread_clean(struct thread *td) argument
339 cpu_thread_swapin(struct thread *td) argument
344 cpu_thread_swapout(struct thread *td) argument
349 cpu_thread_alloc(struct thread *td) argument
365 cpu_thread_free(struct thread *td) argument
372 cpu_set_syscall_retval(struct thread *td, int error) argument
418 cpu_copy_thread(struct thread *td, struct thread *td0) argument
479 cpu_set_upcall(struct thread *td, void (*entry)(void *), void *arg, stack_t *stack) argument
537 cpu_set_user_tls(struct thread *td, void *tls_base) argument
[all...]
/freebsd-11-stable/sys/dev/usb/controller/
H A Ddwc_otg.c723 dwc_otg_host_check_tx_fifo_empty(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
729 if (td->ep_type == UE_ISOCHRONOUS) {
758 struct dwc_otg_td *td, uint8_t is_out)
764 if (td->channel[0] < DWC_OTG_MAX_CHANNELS)
768 if (DWC_OTG_PC2UDEV(td->pc)->flags.self_suspended != 0)
773 if (dwc_otg_host_check_tx_fifo_empty(sc, td) != 0)
776 z = td->max_packet_count;
785 td->channel[y++] = x;
792 td->channel[0] = DWC_OTG_MAX_CHANNELS;
793 td
757 dwc_otg_host_channel_alloc(struct dwc_otg_softc *sc, struct dwc_otg_td *td, uint8_t is_out) argument
822 dwc_otg_host_channel_free_sub(struct dwc_otg_softc *sc, struct dwc_otg_td *td, uint8_t index) argument
868 dwc_otg_host_channel_free(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
876 dwc_otg_host_dump_rx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
892 dwc_otg_host_setup_tx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1102 dwc_otg_setup_rx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1204 dwc_otg_host_rate_check_interrupt(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1223 dwc_otg_host_rate_check(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1261 dwc_otg_host_data_rx_sub(struct dwc_otg_softc *sc, struct dwc_otg_td *td, uint8_t channel) argument
1359 dwc_otg_host_data_rx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1669 dwc_otg_data_rx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
1797 dwc_otg_host_data_tx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
2136 dwc_otg_data_tx(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
2330 dwc_otg_data_tx_sync(struct dwc_otg_softc *sc, struct dwc_otg_td *td) argument
2375 struct dwc_otg_td *td; local
2428 struct dwc_otg_td *td; local
2508 struct dwc_otg_td *td; local
3112 struct dwc_otg_td *td; local
3149 struct dwc_otg_td *td; local
3490 struct dwc_otg_td *td = xfer->td_transfer_cache; local
3539 struct dwc_otg_td *td; local
3666 struct dwc_otg_td *td; local
4881 struct dwc_otg_td *td; local
[all...]
H A Dsaf1761_otg.c217 saf1761_host_channel_alloc(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
222 if (td->channel < SOTG_HOST_CHANNEL_MAX)
226 if (SAF1761_OTG_PC2UDEV(td->pc)->flags.self_suspended != 0)
229 switch (td->ep_type) {
239 td->channel = 32 + x;
250 td->channel = x;
261 td->channel = 64 + x;
268 saf1761_host_channel_free(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
272 if (td->channel >= SOTG_HOST_CHANNEL_MAX)
275 switch (td
328 saf1761_read_host_memory(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td, uint32_t len) argument
383 saf1761_write_host_memory(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td, uint32_t len) argument
434 saf1761_host_setup_tx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
502 saf1761_host_bulk_data_rx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
627 saf1761_host_bulk_data_tx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
714 saf1761_host_intr_data_rx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
828 saf1761_host_intr_data_tx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
924 saf1761_host_isoc_data_rx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1019 saf1761_host_isoc_data_tx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1100 saf1761_read_device_fifo(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td, uint32_t len) argument
1146 saf1761_write_device_fifo(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td, uint32_t len) argument
1190 saf1761_device_setup_rx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1256 saf1761_device_data_rx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1341 saf1761_device_data_tx(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1412 saf1761_device_data_tx_sync(struct saf1761_otg_softc *sc, struct saf1761_otg_td *td) argument
1449 struct saf1761_otg_td *td; local
1496 struct saf1761_otg_td *td; local
1733 struct saf1761_otg_td *td; local
1761 struct saf1761_otg_td *td; local
2080 struct saf1761_otg_td *td; local
2209 struct saf1761_otg_td *td; local
3504 struct saf1761_otg_td *td; local
3619 struct saf1761_otg_td *td; local
3675 struct saf1761_otg_td *td; local
[all...]
/freebsd-11-stable/sys/compat/svr4/
H A Dsvr4_util.h51 #define CHECKALT(td, upath, pathp, i) \
55 _error = svr4_emul_find(td, upath, UIO_USERSPACE, pathp, i); \
60 #define CHECKALTEXIST(td, upath, pathp) CHECKALT(td, upath, pathp, 0)
61 #define CHECKALTCREAT(td, upath, pathp) CHECKALT(td, upath, pathp, 1)
/freebsd-11-stable/sys/arm/cloudabi32/
H A Dcloudabi32_sysvec.c51 cloudabi32_proc_setregs(struct thread *td, struct image_params *imgp, argument
56 exec_setregs(td, imgp, stack);
63 regs = td->td_frame;
64 regs->tf_r0 = td->td_retval[0] =
66 (void)cpu_set_user_tls(td, TO_PTR(stack));
70 cloudabi32_fetch_syscall_args(struct thread *td) argument
76 frame = td->td_frame;
77 sa = &td->td_sa;
92 error = copyin((void *)td->td_frame->tf_usr_sp, &sa->args[4],
99 td
105 cloudabi32_set_syscall_retval(struct thread *td, int error) argument
131 cloudabi32_schedtail(struct thread *td) argument
147 cloudabi32_thread_setregs(struct thread *td, const cloudabi32_threadattr_t *attr, uint32_t tcb) argument
[all...]
/freebsd-11-stable/tools/regression/pthread/unwind/
H A Dcond_wait_cancel.cpp29 pthread_t td; local
33 pthread_create(&td, NULL, thr, NULL);
35 pthread_cancel(td);
36 pthread_join(td, NULL);
H A Dcond_wait_cancel2.cpp46 pthread_t td; local
50 pthread_create(&td, NULL, thr, NULL);
52 pthread_cancel(td);
53 pthread_join(td, NULL);
/freebsd-11-stable/sys/mips/include/
H A Dcpu.h69 #define cpu_getstack(td) ((td)->td_frame->sp)
70 #define cpu_setstack(td, nsp) ((td)->td_frame->sp = (nsp))
/freebsd-11-stable/sys/sparc64/include/
H A Dcpu.h46 #define cpu_getstack(td) ((td)->td_frame->tf_sp)
47 #define cpu_setstack(td, sp) ((td)->td_frame->tf_sp = (sp))

Completed in 147 milliseconds

1234567891011>>