提交 5ef898c1 编写于 作者: W wangyulie

fix code warning

Signed-off-by: Nwangyulie <wanglieyu@126.com>
上级 16d27f67
...@@ -31,13 +31,11 @@ config("public_config") { ...@@ -31,13 +31,11 @@ config("public_config") {
ohos_shared_library("ffrtndk") { ohos_shared_library("ffrtndk") {
sources = [ "./ffrtndk.cpp" ] sources = [ "./ffrtndk.cpp" ]
if (!(product_name == "m40")) {
libs = [ rebase_path(libcxx_ndk_shared_file) ] libs = [ rebase_path(libcxx_ndk_shared_file) ]
}
include_dirs = [ include_dirs = [
"./", "./",
"//foundation/resourceschedule/ffrt/interfaces/kits", "../../../../../../../../../../foundation/resourceschedule/ffrt/interfaces/kits",
] ]
configs = [ ":config" ] configs = [ ":config" ]
...@@ -50,7 +48,7 @@ ohos_shared_library("ffrtndk") { ...@@ -50,7 +48,7 @@ ohos_shared_library("ffrtndk") {
] ]
deps = [ deps = [
"//foundation/resourceschedule/ffrt:ffrt_ndk", "../../../../../../../../../../foundation/resourceschedule/ffrt:ffrt_ndk",
] ]
output_extension = "so" output_extension = "so"
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include <string> #include <string>
#include <unistd.h> #include <unistd.h>
void my_print(void* arg) void MyPrint(void* arg)
{ {
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "%{public}s", "hello ffrt\n"); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "%{public}s", "hello ffrt\n");
} }
...@@ -48,17 +48,17 @@ typedef struct { ...@@ -48,17 +48,17 @@ typedef struct {
ffrt_function_t func; ffrt_function_t func;
ffrt_function_t after_func; ffrt_function_t after_func;
void* arg; void* arg;
} c_function; } CFunction;
typedef struct { typedef struct {
ffrt_cond_t* cond; ffrt_cond_t* cond;
int* a; int* a;
ffrt_mutex_t* lock_; ffrt_mutex_t* lock_;
} tuple; } FfrtTuple;
void func1(void* arg) void Func1(void* arg)
{ {
tuple* t = (tuple*)arg; FfrtTuple* t = (FfrtTuple*)arg;
int ret = ffrt_mutex_lock(t->lock_); int ret = ffrt_mutex_lock(t->lock_);
if (ret != ffrt_success) { if (ret != ffrt_success) {
printf("error\n"); printf("error\n");
...@@ -81,9 +81,9 @@ void func1(void* arg) ...@@ -81,9 +81,9 @@ void func1(void* arg)
printf("a = %d", *(t->a)); printf("a = %d", *(t->a));
} }
void func2(void* arg) void Func2(void* arg)
{ {
tuple* t = (tuple*)arg; FfrtTuple* t = (FfrtTuple*)arg;
int ret = ffrt_mutex_lock(t->lock_); int ret = ffrt_mutex_lock(t->lock_);
if (ret != ffrt_success) { if (ret != ffrt_success) {
printf("error\n"); printf("error\n");
...@@ -99,9 +99,9 @@ void func2(void* arg) ...@@ -99,9 +99,9 @@ void func2(void* arg)
} }
} }
void func3(void* arg) void Func3(void* arg)
{ {
tuple* t = (tuple*)arg; FfrtTuple* t = (FfrtTuple*)arg;
int ret = ffrt_mutex_trylock(t->lock_); int ret = ffrt_mutex_trylock(t->lock_);
if (ret != ffrt_success) { if (ret != ffrt_success) {
printf("error\n"); printf("error\n");
...@@ -127,17 +127,17 @@ void func3(void* arg) ...@@ -127,17 +127,17 @@ void func3(void* arg)
printf("a = %d", *(t->a)); printf("a = %d", *(t->a));
} }
static void ffrt_exec_function_wrapper(void* t) static void FfrtExecFunctionWrapper(void* t)
{ {
c_function* f = (c_function*)t; CFunction* f = (CFunction*)t;
if (f->func) { if (f->func) {
f->func(f->arg); f->func(f->arg);
} }
} }
static void ffrt_destroy_function_wrapper(void* t) static void FfrtDestroyFunctionWrapper(void* t)
{ {
c_function* f = (c_function*)t; CFunction* f = (CFunction*)t;
if (f->after_func) { if (f->after_func) {
f->after_func(f->arg); f->after_func(f->arg);
} }
...@@ -147,30 +147,30 @@ static void ffrt_destroy_function_wrapper(void* t) ...@@ -147,30 +147,30 @@ static void ffrt_destroy_function_wrapper(void* t)
static inline ffrt_function_header_t* ffrt_create_function_wrapper(const ffrt_function_t func, static inline ffrt_function_header_t* ffrt_create_function_wrapper(const ffrt_function_t func,
const ffrt_function_t after_func, void* arg, ffrt_function_kind_t kind_t = ffrt_function_kind_general) const ffrt_function_t after_func, void* arg, ffrt_function_kind_t kind_t = ffrt_function_kind_general)
{ {
FFRT_STATIC_ASSERT(sizeof(c_function) <= ffrt_auto_managed_function_storage_size, FFRT_STATIC_ASSERT(sizeof(CFunction) <= ffrt_auto_managed_function_storage_size,
size_of_function_must_be_less_than_ffrt_auto_managed_function_storage_size); size_of_function_must_be_less_than_ffrt_auto_managed_function_storage_size);
c_function* f = (c_function*)ffrt_alloc_auto_managed_function_storage_base(kind_t); CFunction* f = (CFunction*)ffrt_alloc_auto_managed_function_storage_base(kind_t);
f->header.exec = ffrt_exec_function_wrapper; f->header.exec = FfrtExecFunctionWrapper;
f->header.destroy = ffrt_destroy_function_wrapper; f->header.destroy = FfrtDestroyFunctionWrapper;
f->func = func; f->func = func;
f->after_func = after_func; f->after_func = after_func;
f->arg = arg; f->arg = arg;
return (ffrt_function_header_t*)f; return (ffrt_function_header_t*)f;
} }
static inline void ffrt_submit_c(ffrt_function_t func, const ffrt_function_t after_func, static inline void ffrt_submit_c(ffrt_function_t func, void* arg,
void* arg, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr) const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)
{ {
ffrt_submit_base(ffrt_create_function_wrapper(func, after_func, arg), in_deps, out_deps, attr); ffrt_submit_base(ffrt_create_function_wrapper(func, NULL, arg), in_deps, out_deps, attr);
} }
static inline ffrt_task_handle_t ffrt_submit_h_c(ffrt_function_t func, const ffrt_function_t after_func, static inline ffrt_task_handle_t ffrt_submit_h_c(ffrt_function_t func, void* arg,
void* arg, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr) const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)
{ {
return ffrt_submit_h_base(ffrt_create_function_wrapper(func, after_func, arg), in_deps, out_deps, attr); return ffrt_submit_h_base(ffrt_create_function_wrapper(func, NULL, arg), in_deps, out_deps, attr);
} }
void ffrt_cv_task(void* arg) void FfrtCvTask(void* arg)
{ {
int* a = (int*) arg; int* a = (int*) arg;
ffrt_cond_t cond; ffrt_cond_t cond;
...@@ -179,19 +179,22 @@ void ffrt_cv_task(void* arg) ...@@ -179,19 +179,22 @@ void ffrt_cv_task(void* arg)
printf("error\n"); printf("error\n");
} }
ffrt_mutex_t lock_; ffrt_mutex_t lock_;
tuple t = {&cond, a, &lock_}; FfrtTuple t = {&cond, a, &lock_};
ret = ffrt_mutex_init(&lock_, NULL); ret = ffrt_mutex_init(&lock_, NULL);
if (ret != ffrt_success) { if (ret != ffrt_success) {
printf("error\n"); printf("error\n");
} }
ffrt_submit_c(func1, NULL, &t, NULL, NULL, NULL); ffrt_submit_c(Func1, &t, NULL, NULL, NULL);
ffrt_submit_c(func2, NULL, &t, NULL, NULL, NULL); ffrt_submit_c(Func2, &t, NULL, NULL, NULL);
ffrt_submit_c(func3, NULL, &t, NULL, NULL, NULL); ffrt_submit_c(Func3, &t, NULL, NULL, NULL);
ffrt_wait(); ffrt_wait();
ffrt_cond_destroy(&cond); ffrt_cond_destroy(&cond);
ffrt_mutex_destroy(&lock_); ffrt_mutex_destroy(&lock_);
} }
/**
* add simple ffrt task submit example
*/
static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info) static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info)
{ {
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "%{public}s", "ffrt start\n"); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "%{public}s", "ffrt start\n");
...@@ -206,7 +209,7 @@ static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info) ...@@ -206,7 +209,7 @@ static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info)
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos is %{public}d", ffrt_task_attr_get_qos(&attr)); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos is %{public}d", ffrt_task_attr_get_qos(&attr));
ffrt_task_attr_set_qos(&attr, static_cast<ffrt_qos_t>(ffrt_qos_user_initiated)); ffrt_task_attr_set_qos(&attr, static_cast<ffrt_qos_t>(ffrt_qos_user_initiated));
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos2 is %{public}d", ffrt_task_attr_get_qos(&attr)); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos2 is %{public}d", ffrt_task_attr_get_qos(&attr));
ffrt_submit_c(my_print, NULL, NULL, NULL, NULL, &attr); ffrt_submit_c(MyPrint, NULL, NULL, NULL, &attr);
int result = ffrt_this_task_update_qos(static_cast<ffrt_qos_t>(ffrt_qos_default)); int result = ffrt_this_task_update_qos(static_cast<ffrt_qos_t>(ffrt_qos_default));
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "update_qos result is %{public}d", result); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "update_qos result is %{public}d", result);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos3 is %{public}d", ffrt_task_attr_get_qos(&attr)); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "qos3 is %{public}d", ffrt_task_attr_get_qos(&attr));
...@@ -223,8 +226,8 @@ static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info) ...@@ -223,8 +226,8 @@ static napi_value SubmitSimpleFfrtTask(napi_env env, napi_callback_info info)
static napi_value SubmitCondFfrtTask(napi_env env, napi_callback_info info) static napi_value SubmitCondFfrtTask(napi_env env, napi_callback_info info)
{ {
int a = 0; int a = 0;
ffrt_submit_c(ffrt_cv_task, NULL, &a, NULL, NULL, NULL); ffrt_submit_c(FfrtCvTask, &a, NULL, NULL, NULL);
ffrt_task_handle_t task1 = ffrt_submit_h_c(my_print, NULL, NULL, NULL, NULL, NULL); ffrt_task_handle_t task1 = ffrt_submit_h_c(MyPrint, NULL, NULL, NULL, NULL);
ffrt_wait_deps(nullptr); ffrt_wait_deps(nullptr);
ffrt_wait(); ffrt_wait();
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "cond task a is %{public}d", a); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "cond task a is %{public}d", a);
...@@ -234,6 +237,9 @@ static napi_value SubmitCondFfrtTask(napi_env env, napi_callback_info info) ...@@ -234,6 +237,9 @@ static napi_value SubmitCondFfrtTask(napi_env env, napi_callback_info info)
return flag; return flag;
} }
/**
* add simple ffrt queue task submit example
*/
static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info) static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info)
{ {
int a = 0; int a = 0;
...@@ -241,17 +247,20 @@ static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info) ...@@ -241,17 +247,20 @@ static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info)
ffrt_queue_attr_t queue_attr; ffrt_queue_attr_t queue_attr;
(void)ffrt_queue_attr_init(&queue_attr); (void)ffrt_queue_attr_init(&queue_attr);
ffrt_queue_attr_set_qos(&queue_attr, ffrt_qos_default); ffrt_queue_attr_set_qos(&queue_attr, ffrt_qos_default);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task qos is %{public}d", ffrt_queue_attr_get_qos(&queue_attr)); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task qos is %{public}d",
ffrt_queue_attr_get_qos(&queue_attr));
ffrt_queue_attr_set_timeout(&queue_attr, 10000); ffrt_queue_attr_set_timeout(&queue_attr, 10000);
ffrt_queue_attr_get_timeout(&queue_attr); ffrt_queue_attr_get_timeout(&queue_attr);
ffrt_queue_attr_set_callback(&queue_attr, ffrt_create_function_wrapper(OnePlusForTest, NULL, &b, ffrt_function_kind_queue)); ffrt_queue_attr_set_callback(&queue_attr,
ffrt_create_function_wrapper(OnePlusForTest, NULL, &b, ffrt_function_kind_queue));
ffrt_queue_attr_get_callback(&queue_attr); ffrt_queue_attr_get_callback(&queue_attr);
ffrt_queue_t queue_handle = ffrt_queue_create(ffrt_queue_serial, "test_queue", &queue_attr); ffrt_queue_t queue_handle = ffrt_queue_create(ffrt_queue_serial, "test_queue", &queue_attr);
ffrt_task_handle_t task1 = ffrt_queue_submit_h(queue_handle, ffrt_create_function_wrapper(OnePlusForTest, NULL, &a, ffrt_function_kind_queue), nullptr); ffrt_task_handle_t task1 = ffrt_queue_submit_h(queue_handle,
ffrt_queue_cancel(task1); ffrt_create_function_wrapper(OnePlusForTest, NULL, &a, ffrt_function_kind_queue), nullptr);
ffrt_queue_wait(task1); ffrt_queue_submit(queue_handle,
ffrt_queue_submit(queue_handle, ffrt_create_function_wrapper(MulipleForTest, nullptr, &a, ffrt_function_kind_queue), nullptr); ffrt_create_function_wrapper(MulipleForTest, nullptr, &a, ffrt_function_kind_queue), nullptr);
ffrt_queue_submit(queue_handle, ffrt_create_function_wrapper(SubForTest, nullptr, &a, ffrt_function_kind_queue), nullptr); ffrt_queue_submit(queue_handle,
ffrt_create_function_wrapper(SubForTest, nullptr, &a, ffrt_function_kind_queue), nullptr);
sleep(2); sleep(2);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task a is %{public}d", a); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task a is %{public}d", a);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task b is %{public}d", b); HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "queue task b is %{public}d", b);
...@@ -263,13 +272,63 @@ static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info) ...@@ -263,13 +272,63 @@ static napi_value SubmitQueueFfrtTask(napi_env env, napi_callback_info info)
return flag; return flag;
} }
static napi_value CancelQueueFfrtTask(napi_env env, napi_callback_info info)
{
int a = 0;
int b = 0;
ffrt_queue_attr_t queue_attr;
(void)ffrt_queue_attr_init(&queue_attr);
ffrt_queue_attr_set_qos(&queue_attr, ffrt_qos_default);
ffrt_queue_attr_set_callback(&queue_attr,
ffrt_create_function_wrapper(OnePlusForTest, NULL, &b, ffrt_function_kind_queue));
ffrt_queue_t queue_handle = ffrt_queue_create(ffrt_queue_serial, "test_queue", &queue_attr);
ffrt_task_handle_t task1 = ffrt_queue_submit_h(queue_handle,
ffrt_create_function_wrapper(OnePlusForTest, NULL, &a, ffrt_function_kind_queue), nullptr);
ffrt_queue_cancel(task1);
sleep(2);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "cancel queue task a is %{public}d", a);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "cancel queue task b is %{public}d", b);
napi_value flag = nullptr;
napi_create_double(env, a, &flag);
ffrt_task_handle_destroy(task1);
ffrt_queue_attr_destroy(&queue_attr);
ffrt_queue_destroy(queue_handle);
return flag;
}
static napi_value WaitQueueFfrtTask(napi_env env, napi_callback_info info)
{
int a = 0;
int b = 0;
ffrt_queue_attr_t queue_attr;
(void)ffrt_queue_attr_init(&queue_attr);
ffrt_queue_attr_set_qos(&queue_attr, ffrt_qos_default);
ffrt_queue_attr_set_callback(&queue_attr,
ffrt_create_function_wrapper(OnePlusForTest, NULL, &b, ffrt_function_kind_queue));
ffrt_queue_t queue_handle = ffrt_queue_create(ffrt_queue_serial, "test_queue", &queue_attr);
ffrt_task_handle_t task1 = ffrt_queue_submit_h(queue_handle,
ffrt_create_function_wrapper(OnePlusForTest, NULL, &a, ffrt_function_kind_queue), nullptr);
ffrt_queue_wait(task1);
sleep(2);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "wait queue task a is %{public}d", a);
HiLogPrint(LOG_APP, LOG_INFO, 1, "testFFRT", "wait queue task b is %{public}d", b);
napi_value flag = nullptr;
napi_create_double(env, a, &flag);
ffrt_task_handle_destroy(task1);
ffrt_queue_attr_destroy(&queue_attr);
ffrt_queue_destroy(queue_handle);
return flag;
}
EXTERN_C_START EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports) static napi_value Init(napi_env env, napi_value exports)
{ {
napi_property_descriptor desc[] = { napi_property_descriptor desc[] = {
{ "submitSimpleFfrtTask", nullptr, SubmitSimpleFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr }, { "submitSimpleFfrtTask", nullptr, SubmitSimpleFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr },
{ "submitCondFfrtTask", nullptr, SubmitCondFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr }, { "submitCondFfrtTask", nullptr, SubmitCondFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr },
{ "submitQueueFfrtTask", nullptr, SubmitQueueFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr } { "submitQueueFfrtTask", nullptr, SubmitQueueFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr },
{ "cancelQueueFfrtTask", nullptr, CancelQueueFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr },
{ "waitQueueFfrtTask", nullptr, WaitQueueFfrtTask, nullptr, nullptr, nullptr, napi_default, nullptr }
}; };
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
return exports; return exports;
......
export const submitSimpleFfrtTask: () => number; export const submitSimpleFfrtTask: () => number;
export const submitCondFfrtTask: () => number; export const submitCondFfrtTask: () => number;
export const submitQueueFfrtTask: () => number; export const submitQueueFfrtTask: () => number;
export const cancelQueueFfrtTask: () => number;
export const waitQueueFfrtTask: () => number;
\ No newline at end of file
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from "@ohos/hypium" import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from "@ohos/hypium"
import ffrtndk from 'libffrtndk.so'; import ffrtndk from 'libffrtndk.so';
export default function ffrtTest() { export default function ffrtTest() {
describe('ActsAbilityTest', function () { describe('ActsFfrtTest', function () {
// Defines a test suite. Two parameters are supported: test suite name and test suite function. // Defines a test suite. Two parameters are supported: test suite name and test suite function.
beforeAll(function () { beforeAll(function () {
// Presets an action, which is performed only once before all test cases of the test suite start. // Presets an action, which is performed only once before all test cases of the test suite start.
...@@ -35,14 +35,30 @@ export default function ffrtTest() { ...@@ -35,14 +35,30 @@ export default function ffrtTest() {
// Presets a clear action, which is performed after all test cases of the test suite end. // Presets a clear action, which is performed after all test cases of the test suite end.
// This API supports only one parameter: clear action function. // This API supports only one parameter: clear action function.
}) })
it('assertContain',0, function () { it('submitSimpleFfrtTask',0, function () {
// Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
var flag = ffrtndk.submitSimpleFfrtTask(); var flag = ffrtndk.submitSimpleFfrtTask();
var flag2 = ffrtndk.submitCondFfrtTask();
var flag3 = ffrtndk.submitQueueFfrtTask();
expect(flag).assertEqual(1); expect(flag).assertEqual(1);
expect(flag2).assertEqual(3); })
expect(flag3).assertEqual(-1); it('submitCondFfrtTask',0, function () {
// Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
var flag = ffrtndk.submitCondFfrtTask();
expect(flag).assertEqual(3);
})
it('submitQueueFfrtTask',0, function () {
// Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
var flag = ffrtndk.submitQueueFfrtTask();
expect(flag).assertEqual(9);
})
it('cancelQueueFfrtTask',0, function () {
// Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
var flag = ffrtndk.cancelQueueFfrtTask();
expect(flag).assertEqual(0);
})
it('waitQueueFfrtTask',0, function () {
// Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
var flag = ffrtndk.waitQueueFfrtTask();
expect(flag).assertEqual(1);
}) })
}) })
} }
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册