diff options
author | Kevin Cheng <kevcheng@google.com> | 2019-04-18 11:31:16 -0700 |
---|---|---|
committer | Kevin Cheng <kevcheng@google.com> | 2019-05-02 13:59:40 -0700 |
commit | 757c264bc10ebc71074ee3f5fb66d670667a09bc (patch) | |
tree | 26c7f7b74c752db99d9b0ac1f94fc592aca1e53a /testing/cffi0/callback_in_thread.py | |
parent | 99013222844839c42437f16eace25f4e6a8a8b20 (diff) | |
download | cffi-757c264bc10ebc71074ee3f5fb66d670667a09bc.tar.gz |
Add in cffi 1.12.2 (e0c7666)
Since this is a mercurial repo, d/led zip of src:
https://bitbucket.org/cffi/cffi/get/v1.12.2.zip
Also add in misc METADATA/NOTICE/Android.bp/etc files.
Bug: 122778810
Test: None
Change-Id: I36c58ed07a2cdd4d9d11831908175a5c988f33c1
Diffstat (limited to 'testing/cffi0/callback_in_thread.py')
-rw-r--r-- | testing/cffi0/callback_in_thread.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/testing/cffi0/callback_in_thread.py b/testing/cffi0/callback_in_thread.py new file mode 100644 index 0000000..c98605c --- /dev/null +++ b/testing/cffi0/callback_in_thread.py @@ -0,0 +1,42 @@ +import sys, time +sys.path.insert(0, sys.argv[1]) +from cffi import FFI + +def _run_callback_in_thread(): + ffi = FFI() + ffi.cdef(""" + typedef int (*mycallback_func_t)(int, int); + int threaded_ballback_test(mycallback_func_t mycb); + """) + lib = ffi.verify(""" + #include <pthread.h> + typedef int (*mycallback_func_t)(int, int); + void *my_wait_function(void *ptr) { + mycallback_func_t cbfunc = (mycallback_func_t)ptr; + cbfunc(10, 10); + cbfunc(12, 15); + return NULL; + } + int threaded_ballback_test(mycallback_func_t mycb) { + pthread_t thread; + pthread_create(&thread, NULL, my_wait_function, (void*)mycb); + return 0; + } + """, extra_compile_args=['-pthread']) + seen = [] + @ffi.callback('int(*)(int,int)') + def mycallback(x, y): + time.sleep(0.022) + seen.append((x, y)) + return 0 + lib.threaded_ballback_test(mycallback) + count = 300 + while len(seen) != 2: + time.sleep(0.01) + count -= 1 + assert count > 0, "timeout" + assert seen == [(10, 10), (12, 15)] + +print('STARTING') +_run_callback_in_thread() +print('DONE') |