libcopp 2.3.1
Loading...
Searching...
No Matches
fcontext_test.cpp
Go to the documentation of this file.
1// Copyright 2023 owent
2
3#include <libcopp/utils/config/libcopp_build_features.h>
4
5#include <cstdio>
6#include <cstring>
7#include <iostream>
8
9#if defined(LIBCOPP_MACRO_USE_VALGRIND)
10# include <valgrind/valgrind.h>
11#endif
12
13#include "frame/test_macros.h"
15
17char test_core_fcontext_stack_a[128 * 1024] = {0};
18char test_core_fcontext_stack_b[128 * 1024] = {0};
20
21void test_core_fcontext_func_a(LIBCOPP_COPP_NAMESPACE_ID::fcontext::transfer_t src) {
23
24 copp::fcontext::fcontext_t* fc = reinterpret_cast<copp::fcontext::fcontext_t*>(src.data);
25
29
30 src = copp::fcontext::copp_jump_fcontext_v2(test_core_fcontext_b_func, &test_core_fcontext_b_func);
31 fc = reinterpret_cast<copp::fcontext::fcontext_t*>(src.data);
34
37
38 copp::fcontext::copp_jump_fcontext_v2(test_core_fcontext_main_func, &test_core_fcontext_main_func);
39}
40
41void test_core_fcontext_func_b(LIBCOPP_COPP_NAMESPACE_ID::fcontext::transfer_t src) {
44
45 copp::fcontext::fcontext_t* fc = reinterpret_cast<copp::fcontext::fcontext_t*>(src.data);
47
49 copp::fcontext::copp_jump_fcontext_v2(test_core_fcontext_a_func, fc);
50}
51
53#if defined(LIBCOPP_MACRO_USE_VALGRIND)
54 unsigned valgrind_stack_id_a = VALGRIND_STACK_REGISTER(
56 unsigned valgrind_stack_id_b = VALGRIND_STACK_REGISTER(
58#endif
61
63 copp::fcontext::copp_make_fcontext_v2(test_core_fcontext_stack_a + sizeof(test_core_fcontext_stack_a),
66 copp::fcontext::copp_make_fcontext_v2(test_core_fcontext_stack_b + sizeof(test_core_fcontext_stack_b),
68
69 copp::fcontext::copp_jump_fcontext_v2(test_core_fcontext_a_func, &test_core_fcontext_a_func);
70
73
74#if defined(LIBCOPP_MACRO_USE_VALGRIND)
75 VALGRIND_STACK_DEREGISTER(valgrind_stack_id_a);
76 VALGRIND_STACK_DEREGISTER(valgrind_stack_id_b);
77#endif
78}
char test_core_fcontext_stack_b[128 *1024]
int g_test_core_fcontext_status
copp::fcontext::fcontext_t test_core_fcontext_a_func
char test_core_fcontext_stack_a[128 *1024]
copp::fcontext::fcontext_t test_core_fcontext_main_func
void test_core_fcontext_func_b(LIBCOPP_COPP_NAMESPACE_ID::fcontext::transfer_t src)
copp::fcontext::fcontext_t test_core_fcontext_b_func
void test_core_fcontext_func_a(LIBCOPP_COPP_NAMESPACE_ID::fcontext::transfer_t src)
#define CASE_EXPECT_EQ(l, r)
Definition test_macros.h:99
#define CASE_TEST(test_name, case_name)
Definition test_macros.h:47