• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/compat/linux/

Lines Matching defs:futex

86  * Per futex probes.
88 LIN_SDT_PROBE_DEFINE1(futex, futex, create, "struct sx *");
89 LIN_SDT_PROBE_DEFINE1(futex, futex, destroy, "struct sx *");
94 LIN_SDT_PROBE_DEFINE2(futex, futex_put, entry, "struct futex *",
96 LIN_SDT_PROBE_DEFINE3(futex, futex_put, destroy, "uint32_t *", "uint32_t",
98 LIN_SDT_PROBE_DEFINE3(futex, futex_put, unlock, "uint32_t *", "uint32_t",
100 LIN_SDT_PROBE_DEFINE0(futex, futex_put, return);
101 LIN_SDT_PROBE_DEFINE3(futex, futex_get0, entry, "uint32_t *", "struct futex **",
103 LIN_SDT_PROBE_DEFINE1(futex, futex_get0, umtx_key_get_error, "int");
104 LIN_SDT_PROBE_DEFINE3(futex, futex_get0, shared, "uint32_t *", "uint32_t",
106 LIN_SDT_PROBE_DEFINE1(futex, futex_get0, null, "uint32_t *");
107 LIN_SDT_PROBE_DEFINE3(futex, futex_get0, new, "uint32_t *", "uint32_t", "int");
108 LIN_SDT_PROBE_DEFINE1(futex, futex_get0, return, "int");
109 LIN_SDT_PROBE_DEFINE3(futex, futex_get, entry, "uint32_t *",
110 "struct waiting_proc **", "struct futex **");
111 LIN_SDT_PROBE_DEFINE0(futex, futex_get, error);
112 LIN_SDT_PROBE_DEFINE1(futex, futex_get, return, "int");
113 LIN_SDT_PROBE_DEFINE3(futex, futex_sleep, entry, "struct futex *",
115 LIN_SDT_PROBE_DEFINE5(futex, futex_sleep, requeue_error, "int", "uint32_t *",
117 LIN_SDT_PROBE_DEFINE3(futex, futex_sleep, sleep_error, "int", "uint32_t *",
119 LIN_SDT_PROBE_DEFINE1(futex, futex_sleep, return, "int");
120 LIN_SDT_PROBE_DEFINE3(futex, futex_wake, entry, "struct futex *", "int",
122 LIN_SDT_PROBE_DEFINE3(futex, futex_wake, iterate, "uint32_t",
124 LIN_SDT_PROBE_DEFINE1(futex, futex_wake, wakeup, "struct waiting_proc *");
125 LIN_SDT_PROBE_DEFINE1(futex, futex_wake, return, "int");
126 LIN_SDT_PROBE_DEFINE4(futex, futex_requeue, entry, "struct futex *", "int",
127 "struct futex *", "int");
128 LIN_SDT_PROBE_DEFINE1(futex, futex_requeue, wakeup, "struct waiting_proc *");
129 LIN_SDT_PROBE_DEFINE3(futex, futex_requeue, requeue, "uint32_t *",
131 LIN_SDT_PROBE_DEFINE1(futex, futex_requeue, return, "int");
132 LIN_SDT_PROBE_DEFINE4(futex, futex_wait, entry, "struct futex *",
134 LIN_SDT_PROBE_DEFINE1(futex, futex_wait, sleep_error, "int");
135 LIN_SDT_PROBE_DEFINE1(futex, futex_wait, return, "int");
136 LIN_SDT_PROBE_DEFINE3(futex, futex_atomic_op, entry, "struct thread *",
138 LIN_SDT_PROBE_DEFINE4(futex, futex_atomic_op, decoded_op, "int", "int", "int",
140 LIN_SDT_PROBE_DEFINE0(futex, futex_atomic_op, missing_access_check);
141 LIN_SDT_PROBE_DEFINE1(futex, futex_atomic_op, unimplemented_op, "int");
142 LIN_SDT_PROBE_DEFINE1(futex, futex_atomic_op, unimplemented_cmp, "int");
143 LIN_SDT_PROBE_DEFINE1(futex, futex_atomic_op, return, "int");
144 LIN_SDT_PROBE_DEFINE2(futex, linux_sys_futex, entry, "struct thread *",
146 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_clockswitch);
147 LIN_SDT_PROBE_DEFINE1(futex, linux_sys_futex, copyin_error, "int");
148 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, invalid_cmp_requeue_use);
149 LIN_SDT_PROBE_DEFINE3(futex, linux_sys_futex, debug_wait, "uint32_t *",
151 LIN_SDT_PROBE_DEFINE4(futex, linux_sys_futex, debug_wait_value_neq,
153 LIN_SDT_PROBE_DEFINE3(futex, linux_sys_futex, debug_wake, "uint32_t *",
155 LIN_SDT_PROBE_DEFINE5(futex, linux_sys_futex, debug_cmp_requeue, "uint32_t *",
157 LIN_SDT_PROBE_DEFINE2(futex, linux_sys_futex, debug_cmp_requeue_value_neq,
159 LIN_SDT_PROBE_DEFINE5(futex, linux_sys_futex, debug_wake_op, "uint32_t *",
161 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unhandled_efault);
162 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_lock_pi);
163 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_unlock_pi);
164 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_trylock_pi);
165 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, deprecated_requeue);
166 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_wait_requeue_pi);
167 LIN_SDT_PROBE_DEFINE0(futex, linux_sys_futex, unimplemented_cmp_requeue_pi);
168 LIN_SDT_PROBE_DEFINE1(futex, linux_sys_futex, unknown_operation, "int");
169 LIN_SDT_PROBE_DEFINE1(futex, linux_sys_futex, return, "int");
170 LIN_SDT_PROBE_DEFINE2(futex, linux_set_robust_list, entry, "struct thread *",
172 LIN_SDT_PROBE_DEFINE0(futex, linux_set_robust_list, size_error);
173 LIN_SDT_PROBE_DEFINE1(futex, linux_set_robust_list, return, "int");
174 LIN_SDT_PROBE_DEFINE2(futex, linux_get_robust_list, entry, "struct thread *",
176 LIN_SDT_PROBE_DEFINE1(futex, linux_get_robust_list, copyout_error, "int");
177 LIN_SDT_PROBE_DEFINE1(futex, linux_get_robust_list, return, "int");
178 LIN_SDT_PROBE_DEFINE3(futex, handle_futex_death, entry,
180 LIN_SDT_PROBE_DEFINE1(futex, handle_futex_death, copyin_error, "int");
181 LIN_SDT_PROBE_DEFINE1(futex, handle_futex_death, return, "int");
182 LIN_SDT_PROBE_DEFINE3(futex, fetch_robust_entry, entry,
185 LIN_SDT_PROBE_DEFINE1(futex, fetch_robust_entry, copyin_error, "int");
186 LIN_SDT_PROBE_DEFINE1(futex, fetch_robust_entry, return, "int");
187 LIN_SDT_PROBE_DEFINE2(futex, release_futexes, entry, "struct thread *",
189 LIN_SDT_PROBE_DEFINE1(futex, release_futexes, copyin_error, "int");
190 LIN_SDT_PROBE_DEFINE0(futex, release_futexes, return);
192 struct futex;
196 struct futex *wp_futex;
200 struct futex {
206 LIST_ENTRY(futex) f_list;
216 LIN_SDT_PROBE1(futex, futex, create, \
220 LIN_SDT_PROBE1(futex, futex, destroy, \
240 #define FUTEX_DONTCREATE 0x2 /* don't create futex if not exists */
241 #define FUTEX_DONTEXISTS 0x4 /* return EINVAL if futex exists */
242 #define FUTEX_SHARED 0x8 /* shared futex */
243 #define FUTEX_DONTLOCK 0x10 /* don't lock futex */
247 * of futex where thread sleep to wp_list
248 * of another futex.
250 #define FUTEX_WP_REMOVED 0x2 /* wp is woken up and removed from futex
254 static void futex_put(struct futex *, struct waiting_proc *);
255 static int futex_get0(uint32_t *, struct futex **f, uint32_t);
256 static int futex_get(uint32_t *, struct waiting_proc **, struct futex **,
258 static int futex_sleep(struct futex *, struct waiting_proc *, struct timespec *);
259 static int futex_wake(struct futex *, int, uint32_t);
260 static int futex_requeue(struct futex *, int, struct futex *, int);
263 static int futex_wait(struct futex *, struct waiting_proc *, struct timespec *,
265 static void futex_lock(struct futex *);
266 static void futex_unlock(struct futex *);
299 futex_put(struct futex *f, struct waiting_proc *wp)
301 LIN_SDT_PROBE2(futex, futex_put, entry, f, wp);
316 LIN_SDT_PROBE3(futex, futex_put, destroy, f->f_uaddr,
324 LIN_SDT_PROBE0(futex, futex_put, return);
328 LIN_SDT_PROBE3(futex, futex_put, unlock, f->f_uaddr, f->f_refcount,
336 LIN_SDT_PROBE0(futex, futex_put, return);
340 futex_get0(uint32_t *uaddr, struct futex **newf, uint32_t flags)
342 struct futex *f, *tmpf;
346 LIN_SDT_PROBE3(futex, futex_get0, entry, uaddr, newf, flags);
353 LIN_SDT_PROBE1(futex, futex_get0, umtx_key_get_error, error);
354 LIN_SDT_PROBE1(futex, futex_get0, return, error);
371 LIN_SDT_PROBE1(futex, futex_get0, return,
377 * Increment refcount of the found futex to
387 LIN_SDT_PROBE3(futex, futex_get0, shared, uaddr,
392 LIN_SDT_PROBE1(futex, futex_get0, return, 0);
400 LIN_SDT_PROBE1(futex, futex_get0, null, uaddr);
403 LIN_SDT_PROBE1(futex, futex_get0, return, 0);
418 * Lock the new futex before an insert into the futex_list
419 * to prevent futex usage by other.
429 LIN_SDT_PROBE3(futex, futex_get0, new, uaddr, tmpf->f_refcount,
435 LIN_SDT_PROBE1(futex, futex_get0, return, 0);
440 futex_get(uint32_t *uaddr, struct waiting_proc **wp, struct futex **f,
445 LIN_SDT_PROBE3(futex, futex_get, entry, uaddr, wp, f);
453 LIN_SDT_PROBE0(futex, futex_get, error);
458 LIN_SDT_PROBE1(futex, futex_get, return, error);
466 LIN_SDT_PROBE1(futex, futex_get, return, error);
471 futex_lock(struct futex *f)
481 futex_unlock(struct futex *f)
491 futex_sleep(struct futex *f, struct waiting_proc *wp, struct timespec *ts)
515 LIN_SDT_PROBE3(futex, futex_sleep, entry, f, wp, sbt);
519 error = msleep_sbt(wp, &f->f_lck, PCATCH, "futex", sbt, prec, C_ABSOLUTE);
521 KASSERT(f != wp->wp_futex, ("futex != wp_futex"));
524 LIN_SDT_PROBE5(futex, futex_sleep, requeue_error, error,
538 LIN_SDT_PROBE3(futex, futex_sleep, sleep_error, error,
547 LIN_SDT_PROBE1(futex, futex_sleep, return, error);
552 futex_wake(struct futex *f, int n, uint32_t bitset)
557 LIN_SDT_PROBE3(futex, futex_wake, entry, f, n, bitset);
560 LIN_SDT_PROBE1(futex, futex_wake, return, EINVAL);
566 LIN_SDT_PROBE3(futex, futex_wake, iterate, f->f_uaddr, wp,
579 LIN_SDT_PROBE1(futex, futex_wake, wakeup, wp);
585 LIN_SDT_PROBE1(futex, futex_wake, return, count);
590 futex_requeue(struct futex *f, int n, struct futex *f2, int n2)
595 LIN_SDT_PROBE4(futex, futex_requeue, entry, f, n, f2, n2);
606 LIN_SDT_PROBE1(futex, futex_requeue, wakeup, wp);
609 LIN_SDT_PROBE3(futex, futex_requeue, requeue,
614 /* Move wp to wp_list of f2 futex */
632 LIN_SDT_PROBE1(futex, futex_requeue, return, count);
637 futex_wait(struct futex *f, struct waiting_proc *wp, struct timespec *ts,
642 LIN_SDT_PROBE4(futex, futex_wait, entry, f, wp, ts, bitset);
645 LIN_SDT_PROBE1(futex, futex_wait, return, EINVAL);
653 LIN_SDT_PROBE1(futex, futex_wait, sleep_error, error);
657 LIN_SDT_PROBE1(futex, futex_wait, return, error);
670 LIN_SDT_PROBE3(futex, futex_atomic_op, entry, td, encoded_op, uaddr);
675 LIN_SDT_PROBE4(futex, futex_atomic_op, decoded_op, op, cmp, oparg,
679 LIN_SDT_PROBE0(futex, futex_atomic_op, missing_access_check);
698 LIN_SDT_PROBE1(futex, futex_atomic_op, unimplemented_op, op);
704 LIN_SDT_PROBE1(futex, futex_atomic_op, return, ret);
728 LIN_SDT_PROBE1(futex, futex_atomic_op, unimplemented_cmp, cmp);
732 LIN_SDT_PROBE1(futex, futex_atomic_op, return, ret);
742 struct futex *f, *f2;
747 LIN_SDT_PROBE2(futex, linux_sys_futex, entry, td, args);
765 LIN_SDT_PROBE0(futex, linux_sys_futex,
767 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
780 LIN_SDT_PROBE3(futex, linux_sys_futex, debug_wait, args->uaddr,
789 LIN_SDT_PROBE1(futex, linux_sys_futex, copyin_error,
791 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
802 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
812 LIN_SDT_PROBE1(futex, linux_sys_futex, copyin_error,
816 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
820 LIN_SDT_PROBE4(futex, linux_sys_futex,
828 LIN_SDT_PROBE1(futex, linux_sys_futex, return,
841 LIN_SDT_PROBE3(futex, linux_sys_futex, debug_wake, args->uaddr,
849 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
856 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
864 LIN_SDT_PROBE5(futex, linux_sys_futex, debug_cmp_requeue,
877 LIN_SDT_PROBE0(futex, linux_sys_futex,
879 LIN_SDT_PROBE1(futex, linux_sys_futex, return, EINVAL);
886 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
891 * To avoid deadlocks return EINVAL if second futex
902 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
914 LIN_SDT_PROBE1(futex, linux_sys_futex, copyin_error,
918 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
922 LIN_SDT_PROBE2(futex, linux_sys_futex,
929 LIN_SDT_PROBE1(futex, linux_sys_futex, return, EAGAIN);
940 LIN_SDT_PROBE5(futex, linux_sys_futex, debug_wake_op,
948 LIN_SDT_PROBE1(futex, linux_sys_futex, return, EINVAL);
955 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
963 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
987 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
1016 LIN_SDT_PROBE0(futex, linux_sys_futex,
1019 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1028 LIN_SDT_PROBE0(futex, linux_sys_futex,
1031 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1040 LIN_SDT_PROBE0(futex, linux_sys_futex,
1043 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1057 LIN_SDT_PROBE0(futex, linux_sys_futex,
1061 LIN_SDT_PROBE1(futex, linux_sys_futex, return, EINVAL);
1070 LIN_SDT_PROBE0(futex, linux_sys_futex,
1073 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1082 LIN_SDT_PROBE0(futex, linux_sys_futex,
1085 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1089 linux_msg(td, "unsupported futex op %d", args->op);
1090 LIN_SDT_PROBE1(futex, linux_sys_futex, unknown_operation,
1092 LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS);
1096 LIN_SDT_PROBE1(futex, linux_sys_futex, return, error);
1105 LIN_SDT_PROBE2(futex, linux_set_robust_list, entry, td, args);
1108 LIN_SDT_PROBE0(futex, linux_set_robust_list, size_error);
1109 LIN_SDT_PROBE1(futex, linux_set_robust_list, return, EINVAL);
1116 LIN_SDT_PROBE1(futex, linux_set_robust_list, return, 0);
1129 LIN_SDT_PROBE2(futex, linux_get_robust_list, entry, td, args);
1138 LIN_SDT_PROBE1(futex, linux_get_robust_list, return,
1143 LIN_SDT_PROBE1(futex, linux_get_robust_list, return,
1157 LIN_SDT_PROBE1(futex, linux_get_robust_list, return,
1168 LIN_SDT_PROBE1(futex, linux_get_robust_list, copyout_error,
1170 LIN_SDT_PROBE1(futex, linux_get_robust_list, return, EFAULT);
1176 LIN_SDT_PROBE1(futex, linux_get_robust_list, copyout_error,
1180 LIN_SDT_PROBE1(futex, linux_get_robust_list, return, error);
1189 struct futex *f;
1192 LIN_SDT_PROBE3(futex, handle_futex_death, entry, em, uaddr, pi);
1197 LIN_SDT_PROBE1(futex, handle_futex_death, copyin_error, error);
1198 LIN_SDT_PROBE1(futex, handle_futex_death, return, EFAULT);
1206 LIN_SDT_PROBE1(futex, handle_futex_death, return,
1218 LIN_SDT_PROBE1(futex, handle_futex_death,
1229 LIN_SDT_PROBE1(futex, handle_futex_death, return, 0);
1240 LIN_SDT_PROBE3(futex, fetch_robust_entry, entry, entry, head, pi);
1244 LIN_SDT_PROBE1(futex, fetch_robust_entry, copyin_error, error);
1245 LIN_SDT_PROBE1(futex, fetch_robust_entry, return, EFAULT);
1252 LIN_SDT_PROBE1(futex, fetch_robust_entry, return, 0);
1266 LIN_SDT_PROBE2(futex, release_futexes, entry, td, em);
1271 LIN_SDT_PROBE0(futex, release_futexes, return);
1276 LIN_SDT_PROBE0(futex, release_futexes, return);
1283 LIN_SDT_PROBE1(futex, release_futexes, copyin_error, error);
1284 LIN_SDT_PROBE0(futex, release_futexes, return);
1289 LIN_SDT_PROBE0(futex, release_futexes, return);
1299 LIN_SDT_PROBE0(futex, release_futexes, return);
1303 LIN_SDT_PROBE0(futex, release_futexes, return);
1319 LIN_SDT_PROBE0(futex, release_futexes, return);