system_work_q.c 789 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2016 Wind River Systems, Inc.
  3. * Copyright (c) 2016 Intel Corporation
  4. *
  5. * SPDX-License-Identifier: Apache-2.0
  6. */
  7. /**
  8. * @file
  9. *
  10. * System workqueue.
  11. */
  12. #include <kernel.h>
  13. #include <init.h>
  14. static K_KERNEL_STACK_DEFINE(sys_work_q_stack,
  15. CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE);
  16. struct k_work_q k_sys_work_q;
  17. static int k_sys_work_q_init(const struct device *dev)
  18. {
  19. ARG_UNUSED(dev);
  20. struct k_work_queue_config cfg = {
  21. .name = "sysworkq",
  22. .no_yield = IS_ENABLED(CONFIG_SYSTEM_WORKQUEUE_NO_YIELD),
  23. };
  24. k_work_queue_start(&k_sys_work_q,
  25. sys_work_q_stack,
  26. K_KERNEL_STACK_SIZEOF(sys_work_q_stack),
  27. CONFIG_SYSTEM_WORKQUEUE_PRIORITY, &cfg);
  28. return 0;
  29. }
  30. SYS_INIT(k_sys_work_q_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);