0d3c1bfb5b0810ccd911c5b0a168fcdd605483ba
[librseq.git] / include / rseq / cpu-op.h
1 /* SPDX-License-Identifier: LGPL-2.1 OR MIT */
2 /*
3 * cpu-op.h
4 *
5 * (C) Copyright 2017-2018 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 */
7
8 #ifndef RSEQ_CPU_OP_H
9 #define RSEQ_CPU_OP_H
10
11 #include <stdlib.h>
12 #include <stdint.h>
13 #include <linux/cpu_opv.h>
14
15 int cpu_opv(struct cpu_op *cpuopv, int cpuopcnt, int cpu, int flags);
16 int cpu_op_get_current_cpu(void);
17
18 int cpu_op_cmpxchg(void *v, void *expect, void *old, void *_new, size_t len,
19 int cpu);
20 int cpu_op_add(void *v, int64_t count, size_t len, int cpu);
21
22 int cpu_op_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu);
23 int cpu_op_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
24 off_t voffp, intptr_t *load, int cpu);
25 int cpu_op_cmpeqv_storev_storev(intptr_t *v, intptr_t expect,
26 intptr_t *v2, intptr_t newv2,
27 intptr_t newv, int cpu);
28 int cpu_op_cmpeqv_storev_mb_storev(intptr_t *v, intptr_t expect,
29 intptr_t *v2, intptr_t newv2,
30 intptr_t newv, int cpu);
31 int cpu_op_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
32 intptr_t *v2, intptr_t expect2,
33 intptr_t newv, int cpu);
34 int cpu_op_cmpeqv_memcpy_storev(intptr_t *v, intptr_t expect,
35 void *dst, void *src, size_t len,
36 intptr_t newv, int cpu);
37 int cpu_op_cmpeqv_memcpy_mb_storev(intptr_t *v, intptr_t expect,
38 void *dst, void *src, size_t len,
39 intptr_t newv, int cpu);
40 int cpu_op_addv(intptr_t *v, int64_t count, int cpu);
41
42 #endif /* RSEQ_CPU_OP_H_ */
This page took 0.036194 seconds and 3 git commands to generate.