File tree Expand file tree Collapse file tree 8 files changed +87
-1
lines changed
tests/runtime-async/async/simple-yield Expand file tree Collapse file tree 8 files changed +87
-1
lines changed Original file line number Diff line number Diff line change @@ -136,6 +136,7 @@ jobs:
136
136
--artifacts target/artifacts \
137
137
--rust-wit-bindgen-path ./crates/guest-rust \
138
138
--rust-target wasm32-wasip1 \
139
+ --c-target wasm32-wasip1 \
139
140
--runner "$WASMTIME -W component-model-async -Sp3"
140
141
141
142
test_unit :
Original file line number Diff line number Diff line change @@ -761,6 +761,8 @@ void {snake}_backpressure_inc(void);
761
761
void {snake}_backpressure_dec(void);
762
762
void* {snake}_context_get(void);
763
763
void {snake}_context_set(void*);
764
+ void {snake}_yield(void);
765
+ uint32_t {snake}_yield_cancellable(void);
764
766
"
765
767
) ;
766
768
uwriteln ! (
@@ -855,6 +857,20 @@ extern void __context_set(void*);
855
857
void {snake}_context_set(void *val) {{
856
858
return __context_set(val);
857
859
}}
860
+
861
+ __attribute__((__import_module__("$root"), __import_name__("[thread-yield]")))
862
+ extern uint32_t __thread_yield(void);
863
+
864
+ void {snake}_yield(void) {{
865
+ __thread_yield();
866
+ }}
867
+
868
+ __attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield]")))
869
+ extern uint32_t __thread_yield_cancellable(void);
870
+
871
+ uint32_t {snake}_yield_cancellable(void) {{
872
+ return __thread_yield_cancellable();
873
+ }}
858
874
"#
859
875
) ;
860
876
}
Original file line number Diff line number Diff line change @@ -464,7 +464,7 @@ pub fn yield_blocking() -> bool {
464
464
#[ cfg( target_arch = "wasm32" ) ]
465
465
#[ link( wasm_import_module = "$root" ) ]
466
466
extern "C" {
467
- #[ link_name = "[yield]" ]
467
+ #[ link_name = "[thread- yield]" ]
468
468
fn yield_ ( ) -> bool ;
469
469
}
470
470
// Note that the return value from the raw intrinsic is inverted, the
Original file line number Diff line number Diff line change
1
+ //@ args = '--rename a:b/i=test'
2
+ #include <assert.h>
3
+ #include <runner.h>
4
+
5
+ int main () {
6
+ runner_subtask_status_t status = test_async_f ();
7
+ assert (RUNNER_SUBTASK_STATE (status ) == RUNNER_SUBTASK_STARTED );
8
+ runner_subtask_t task = RUNNER_SUBTASK_HANDLE (status );
9
+
10
+ runner_waitable_set_t set = runner_waitable_set_new ();
11
+ runner_waitable_join (task , set );
12
+ runner_event_t event ;
13
+ runner_waitable_set_wait (set , & event );
14
+ assert (event .event == RUNNER_EVENT_SUBTASK );
15
+ assert (event .waitable == task );
16
+ assert (event .code == RUNNER_SUBTASK_RETURNED );
17
+ runner_waitable_join (task , 0 );
18
+ runner_waitable_set_drop (set );
19
+ }
Original file line number Diff line number Diff line change
1
+ include ! ( env!( "BINDINGS" ) ) ;
2
+
3
+ fn main ( ) {
4
+ wit_bindgen:: block_on ( async {
5
+ crate :: a:: b:: i:: f ( ) . await ;
6
+ } ) ;
7
+ }
Original file line number Diff line number Diff line change
1
+ //@ args = '--rename a:b/i=test'
2
+
3
+ #include <assert.h>
4
+ #include <test.h>
5
+ #include <stdio.h>
6
+
7
+ test_subtask_status_t exports_test_async_f () {
8
+ return TEST_CALLBACK_CODE_YIELD ;
9
+ }
10
+
11
+ test_subtask_status_t exports_test_async_f_callback (test_event_t * event ) {
12
+ assert (event -> event == TEST_EVENT_NONE );
13
+ assert (event -> waitable == 0 );
14
+ assert (event -> code == 0 );
15
+ test_yield ();
16
+ exports_test_async_f_return ();
17
+ return TEST_CALLBACK_CODE_EXIT ;
18
+ }
Original file line number Diff line number Diff line change
1
+ include ! ( env!( "BINDINGS" ) ) ;
2
+
3
+ struct Component ;
4
+
5
+ export ! ( Component ) ;
6
+
7
+ impl crate :: exports:: a:: b:: i:: Guest for Component {
8
+ async fn f ( ) {
9
+ wit_bindgen:: yield_async ( ) . await ;
10
+ assert ! ( wit_bindgen:: yield_blocking( ) ) ;
11
+ }
12
+ }
Original file line number Diff line number Diff line change
1
+ package a : b ;
2
+
3
+ interface i {
4
+ f : async func ();
5
+ }
6
+
7
+ world test {
8
+ export i ;
9
+ }
10
+
11
+ world runner {
12
+ import i ;
13
+ }
You can’t perform that action at this time.
0 commit comments