Ah yes. Split applications should have the same settings for shared packages. Forgot about this when replacing pkg.yml contents with the updates.
I’ll try a split use case today. > On Jan 23, 2017, at 7:12 PM, Jacob Rosenthal <[email protected]> wrote: > > Looks like this breaks splitty as app, bleprph as loader > Error: Syscfg ambiguities detected: > Setting: OS_MAIN_TASK_PRIO, Packages: [apps/bleprph, apps/splitty] > Setting history (newest -> oldest): > OS_MAIN_TASK_PRIO: [apps/splitty:10, apps/bleprph:1, kernel/os:0xfe] > > Setting OS_MAIN_TASK_PRIO in splitty to 1 made this go away..but Dont know > if theres other complications related to that though.Then it gets stuck > after confirming image and resetting while entering the app image at > gcc_startup_nrf51.s Default_Handler > > On Mon, Jan 23, 2017 at 4:48 PM, marko kiiskila <[email protected]> wrote: > >> I pushed this change to develop. >> >> You’ll need to update the newt tool as part of this change; as sysinit >> calls should not include call to os_init() anymore. >> >> After this change you can specify multiple calls to be made to your package >> from sysinit(). >> Tell newt to do this by having this kind of block in your pkg.yml. >> >> pkg.init: >> ble_hs_init: 200 >> ble_hs_init2: 500 >> >> I.e. in pkg.init block specify function name followed by call order. >> >> And app main() should minimally look like: >> >> int >> main(int argc, char **argv) >> { >> #ifdef ARCH_sim >> mcu_sim_parse_args(argc, argv); >> #endif >> >> sysinit(); >> >> while (1) { >> os_eventq_run(os_eventq_dflt_get()); >> } >> assert(0); >> >> return rc; >> } >> >> So there’s a call to mcu_sim_parse_args() (in case app can execute in >> simulator), >> call to sysinit(), which calls all the package init routines, followed by >> this main task >> calling os_eventq_run() for default task. >> >> I might also want to lock the scheduler for the duration of call to >> sysinit(); >> but we don’t have that facility yet. This might be a good time to add it? >> >>> On Jan 21, 2017, at 9:00 AM, will sanfilippo <[email protected]> wrote: >>> >>> +1 sounds good to me. I dont think the amount of changes to the app are >> all that many and folks should be able to deal with them pretty easily. >>> >>> >>>> On Jan 20, 2017, at 1:35 PM, Sterling Hughes < >> [email protected]> wrote: >>>> >>>> Hey, >>>> >>>> Changed the subject to call this out to more people. :-) >>>> >>>> Response above, because I generally think this is on the right track. >> In my view, we should bite the bullet prior to 1.0, and move to this >> approach. I think it greatly simplifies startup, and the concept of the >> default event queue now ties into their being a default task. >>>> >>>> That said, I’m open to concerns from others — it is a fairly major >> change to system startup, and it would be last minute. With Fabio’s last >> changes to the hal_flash* APIs, I think we’re mostly good for 1.0 >> otherwise, and should roll beta2 soon after this. >>>> >>>> Sterling >>>> >>>> On 20 Jan 2017, at 13:26, marko kiiskila wrote: >>>> >>>>> Hi, >>>>> >>>>> this is continuation of effort Chris started to improve sysinit. >>>>> >>>>> What I’ve started on this branch is an attempt to (hopefully) make >> things >>>>> better. >>>>> >>>>> I added a concept of “main task”, which would be created by the system >>>>> automatically, and it’s job would be to handle events from the os >> default >>>>> event queue. >>>>> Currently, you have to create this queue, and assign processing of it >>>>> to a task inside your app. >>>>> >>>>> Another thing I’m doing here is move the call to main() to happen >>>>> within this task’s context. At the moment this happens before OS >>>>> has been initialized, or started. >>>>> So now you can count on OS being up when doing package initialization. >>>>> At the moment quite a few packages queue a 'start event’ to take place >>>>> right after OS has started. This would not be needed anymore, as >>>>> you can do everything during the init routine itself. >>>>> >>>>> Also, the default event queue gets assigned, and initialized before >> any of >>>>> the packages have had their respective init routines called. >> Previously, >>>>> this often happened after sysinit() had been called, and packages did >>>>> not know where to queue that start event. >>>>> >>>>> I checked this in to a branch, and wanted to hear yay/nay before >> proceeding >>>>> with this further. As this is a bit of an architectural change. >>>>> Also, I want to hear if this should make it’s way in before 1.0. >>>>> >>>>> More specifically, take a look at how applications would have to >> change their >>>>> main(); instead of calling os_start() in the end, they would start >> processing >>>>> events from default queue. And they’d have specify the priority, and >> stack >>>>> size of the main task. >>>>> >>>>> Another change I was going to make would involve changes in the way >>>>> packages register routines to be called from sysinit(). >>>>> Currently, there’s only one init() per-package. >>>>> I was going to make it possible for a package to register multiple >> routines >>>>> for this. That way you can break the initialization to multiple parts >> in cases >>>>> where packages have interdependencies between each other. >>>>> Also, the app should be able to interject pieces of code that gets >> executed >>>>> in the middle of sysinit(). >>>>> To make this easier, I was going to make the current initialization >> level >>>>> numbering a bit wider. So the existing level “1” would become “100”, >>>>> and “2” -> “200”. >>>>> >>>>> So, feedback about this approach, and then whether this is 1.0 or 1.1 >>>>> kind of thing. >>>>> >>>>> Thanks, >>>>> M >>>>> >>>>>> Begin forwarded message: >>>>>> >>>>>> From: [email protected] >>>>>> Subject: incubator-mynewt-core git commit: os; spin up OS before >> calling. main() gets called in context of main task. >>>>>> Date: January 20, 2017 at 12:18:03 PM PST >>>>>> To: [email protected] >>>>>> Reply-To: [email protected] >>>>>> >>>>>> Repository: incubator-mynewt-core >>>>>> Updated Branches: >>>>>> refs/heads/def_task [created] 0c9fe5e2b >>>>>> >>>>>> >>>>>> os; spin up OS before calling. main() gets called in context of >>>>>> main task. >>>>>> >>>>>> >>>>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/repo >>>>>> Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/commit/0c9fe5e2 >>>>>> Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/tree/0c9fe5e2 >>>>>> Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/diff/0c9fe5e2 >>>>>> >>>>>> Branch: refs/heads/def_task >>>>>> Commit: 0c9fe5e2b3c6d3f6ca34e570e34eac6e55a40c66 >>>>>> Parents: 449ef81 >>>>>> Author: Marko Kiiskila <[email protected]> >>>>>> Authored: Fri Jan 20 12:16:20 2017 -0800 >>>>>> Committer: Marko Kiiskila <[email protected]> >>>>>> Committed: Fri Jan 20 12:16:20 2017 -0800 >>>>>> >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> apps/bleprph/src/main.c | 47 +- >>>>>> apps/bleprph/syscfg.yml | 4 + >>>>>> apps/oled_test/pkg.yml | 47 ++ >>>>>> apps/oled_test/src/main.c | 467 >> +++++++++++++++++++ >>>>>> apps/slinky/src/main.c | 44 +- >>>>>> apps/slinky/syscfg.yml | 3 + >>>>>> hw/mcu/native/src/hal_system.c | 16 +- >>>>>> kernel/os/include/os/os.h | 2 + >>>>>> kernel/os/include/os/os_eventq.h | 1 - >>>>>> kernel/os/src/os.c | 24 + >>>>>> kernel/os/src/os_eventq.c | 23 +- >>>>>> kernel/os/syscfg.yml | 6 + >>>>>> kernel/os/test/src/eventq_test.c | 1 - >>>>>> kernel/os/test/src/mempool_test.c | 1 + >>>>>> kernel/os/test/src/mutex_test.c | 3 +- >>>>>> kernel/os/test/src/os_test.c | 5 +- >>>>>> kernel/os/test/src/sem_test.c | 73 +-- >>>>>> .../test/src/testcases/event_test_poll_0timo.c | 2 +- >>>>>> .../src/testcases/event_test_poll_single_sr.c | 3 +- >>>>>> .../os/test/src/testcases/event_test_poll_sr.c | 1 + >>>>>> .../src/testcases/event_test_poll_timeout_sr.c | 5 +- >>>>>> kernel/os/test/src/testcases/event_test_src.c | 3 +- >>>>>> kernel/os/test/src/testcases/os_callout_test.c | 7 +- >>>>>> .../test/src/testcases/os_callout_test_speak.c | 7 +- >>>>>> .../test/src/testcases/os_callout_test_stop.c | 9 +- >>>>>> libc/baselibc/src/start.c | 9 + >>>>>> .../mn_socket/test/src/testcases/socket_tests.c | 1 + >>>>>> test/testutil/src/testutil.c | 1 + >>>>>> 28 files changed, 660 insertions(+), 155 deletions(-) >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/bleprph/src/main.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/bleprph/src/main.c b/apps/bleprph/src/main.c >>>>>> index 65911a5..e75264d 100755 >>>>>> --- a/apps/bleprph/src/main.c >>>>>> +++ b/apps/bleprph/src/main.c >>>>>> @@ -42,14 +42,6 @@ >>>>>> /** Log data. */ >>>>>> struct log bleprph_log; >>>>>> >>>>>> -/** bleprph task settings. */ >>>>>> -#define BLEPRPH_TASK_PRIO 1 >>>>>> -#define BLEPRPH_STACK_SIZE (OS_STACK_ALIGN(428)) >>>>>> - >>>>>> -struct os_eventq bleprph_evq; >>>>>> -struct os_task bleprph_task; >>>>>> -bssnz_t os_stack_t *bleprph_stack; >>>>>> - >>>>>> static int bleprph_gap_event(struct ble_gap_event *event, void *arg); >>>>>> >>>>>> /** >>>>>> @@ -248,17 +240,6 @@ bleprph_on_sync(void) >>>>>> } >>>>>> >>>>>> /** >>>>>> - * Event loop for the main bleprph task. >>>>>> - */ >>>>>> -static void >>>>>> -bleprph_task_handler(void *unused) >>>>>> -{ >>>>>> - while (1) { >>>>>> - os_eventq_run(&bleprph_evq); >>>>>> - } >>>>>> -} >>>>>> - >>>>>> -/** >>>>>> * main >>>>>> * >>>>>> * The main function for the project. This function initializes the >> os, calls >>>>>> @@ -282,19 +263,6 @@ main(void) >>>>>> log_register("bleprph", &bleprph_log, &log_console_handler, NULL, >>>>>> LOG_SYSLEVEL); >>>>>> >>>>>> - /* Initialize eventq */ >>>>>> - os_eventq_init(&bleprph_evq); >>>>>> - >>>>>> - bleprph_stack = malloc(sizeof bleprph_stack * >> BLEPRPH_STACK_SIZE); >>>>>> - assert(bleprph_stack != NULL); >>>>>> - >>>>>> - /* Create the bleprph task. All application logic and NimBLE >> host >>>>>> - * operations are performed in this task. >>>>>> - */ >>>>>> - os_task_init(&bleprph_task, "bleprph", bleprph_task_handler, >>>>>> - NULL, BLEPRPH_TASK_PRIO, OS_WAIT_FOREVER, >>>>>> - bleprph_stack, BLEPRPH_STACK_SIZE); >>>>>> - >>>>>> /* Initialize the NimBLE host configuration. */ >>>>>> log_register("ble_hs", &ble_hs_log, &log_console_handler, NULL, >>>>>> LOG_SYSLEVEL); >>>>>> @@ -309,9 +277,6 @@ main(void) >>>>>> rc = ble_svc_gap_device_name_set("nimble-bleprph"); >>>>>> assert(rc == 0); >>>>>> >>>>>> - /* Set the default eventq for packages that lack a dedicated >> task. */ >>>>>> - os_eventq_dflt_set(&bleprph_evq); >>>>>> - >>>>>> conf_load(); >>>>>> >>>>>> /* If this app is acting as the loader in a split image setup, jump >> into >>>>>> @@ -327,11 +292,11 @@ main(void) >>>>>> } >>>>>> #endif >>>>>> >>>>>> - /* Start the OS */ >>>>>> - os_start(); >>>>>> - >>>>>> - /* os start should never return. If it does, this should be an >> error */ >>>>>> - assert(0); >>>>>> - >>>>>> + /* >>>>>> + * As the last thing, process events from default event queue. >>>>>> + */ >>>>>> + while (1) { >>>>>> + os_eventq_run(os_eventq_dflt_get()); >>>>>> + } >>>>>> return 0; >>>>>> } >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/bleprph/syscfg.yml >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/bleprph/syscfg.yml b/apps/bleprph/syscfg.yml >>>>>> index 6db8c1e..f40e959 100644 >>>>>> --- a/apps/bleprph/syscfg.yml >>>>>> +++ b/apps/bleprph/syscfg.yml >>>>>> @@ -42,3 +42,7 @@ syscfg.vals: >>>>>> >>>>>> # Enable Config. >>>>>> CONFIG_NEWTMGR: 1 >>>>>> + >>>>>> + # OS main/default task >>>>>> + OS_MAIN_TASK_PRIO: 1 >>>>>> + OS_MAIN_STACK_SIZE: 428 >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/oled_test/pkg.yml >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/oled_test/pkg.yml b/apps/oled_test/pkg.yml >>>>>> new file mode 100644 >>>>>> index 0000000..89c9cd0 >>>>>> --- /dev/null >>>>>> +++ b/apps/oled_test/pkg.yml >>>>>> @@ -0,0 +1,47 @@ >>>>>> +# >>>>>> +# Licensed to the Apache Software Foundation (ASF) under one >>>>>> +# or more contributor license agreements. See the NOTICE file >>>>>> +# distributed with this work for additional information >>>>>> +# regarding copyright ownership. The ASF licenses this file >>>>>> +# to you under the Apache License, Version 2.0 (the >>>>>> +# "License"); you may not use this file except in compliance >>>>>> +# with the License. You may obtain a copy of the License at >>>>>> +# >>>>>> +# http://www.apache.org/licenses/LICENSE-2.0 >>>>>> +# >>>>>> +# Unless required by applicable law or agreed to in writing, >>>>>> +# software distributed under the License is distributed on an >>>>>> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>>>> +# KIND, either express or implied. See the License for the >>>>>> +# specific language governing permissions and limitations >>>>>> +# under the License. >>>>>> +# >>>>>> + >>>>>> +pkg.name: apps/oled_test >>>>>> +pkg.type: app >>>>>> +pkg.description: Example application which exercises OLED_display. >>>>>> +pkg.author: "Apache Mynewt <[email protected]>" >>>>>> +pkg.homepage: "http://mynewt.apache.org/" >>>>>> +pkg.keywords: >>>>>> + >>>>>> +pkg.deps: >>>>>> + - drivers/mpu_3050 >>>>>> + - fs/nffs >>>>>> + - libs/console/full >>>>>> + - libs/flash_test >>>>>> + - libs/imgmgr >>>>>> + - libs/newtmgr >>>>>> + - libs/os >>>>>> + - libs/shell >>>>>> + - libs/util >>>>>> + - sys/config >>>>>> + - sys/id >>>>>> + >>>>>> +pkg.cflags: >>>>>> + - "-DSTATS_NAME_ENABLE=1" >>>>>> + >>>>>> +pkg.cflags.NFFS: >>>>>> + - "-DNFFS_PRESENT" >>>>>> + >>>>>> +pkg.cflags.FCB: >>>>>> + - "-DFCB_PRESENT" >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/oled_test/src/main.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/oled_test/src/main.c b/apps/oled_test/src/main.c >>>>>> new file mode 100755 >>>>>> index 0000000..f8494b9 >>>>>> --- /dev/null >>>>>> +++ b/apps/oled_test/src/main.c >>>>>> @@ -0,0 +1,467 @@ >>>>>> +/** >>>>>> + * Licensed to the Apache Software Foundation (ASF) under one >>>>>> + * or more contributor license agreements. See the NOTICE file >>>>>> + * distributed with this work for additional information >>>>>> + * regarding copyright ownership. The ASF licenses this file >>>>>> + * to you under the Apache License, Version 2.0 (the >>>>>> + * "License"); you may not use this file except in compliance >>>>>> + * with the License. You may obtain a copy of the License at >>>>>> + * >>>>>> + * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> + * >>>>>> + * Unless required by applicable law or agreed to in writing, >>>>>> + * software distributed under the License is distributed on an >>>>>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>>>> + * KIND, either express or implied. See the License for the >>>>>> + * specific language governing permissions and limitations >>>>>> + * under the License. >>>>>> + */ >>>>>> +#include <os/os.h> >>>>>> +#include <bsp/bsp.h> >>>>>> +#include <hal/hal_gpio.h> >>>>>> +#include <hal/hal_flash.h> >>>>>> +#include <console/console.h> >>>>>> +#include <shell/shell.h> >>>>>> +#include <config/config.h> >>>>>> +#include <hal/flash_map.h> >>>>>> +#include <hal/hal_system.h> >>>>>> +#ifdef NFFS_PRESENT >>>>>> +#include <fs/fs.h> >>>>>> +#include <nffs/nffs.h> >>>>>> +#include <config/config_file.h> >>>>>> +#elif FCB_PRESENT >>>>>> +#include <fcb/fcb.h> >>>>>> +#include <config/config_fcb.h> >>>>>> +#else >>>>>> +#error "Need NFFS or FCB for config storage" >>>>>> +#endif >>>>>> +#include <newtmgr/newtmgr.h> >>>>>> +#include <bootutil/image.h> >>>>>> +#include <bootutil/bootutil_misc.h> >>>>>> +#include <imgmgr/imgmgr.h> >>>>>> +#include <assert.h> >>>>>> +#include <string.h> >>>>>> +#include <json/json.h> >>>>>> +#include <flash_test/flash_test.h> >>>>>> +#include <reboot/log_reboot.h> >>>>>> +#include <os/os_time.h> >>>>>> +#include <id/id.h> >>>>>> + >>>>>> +#include <mpu_3050/mpu_3050.h> >>>>>> + >>>>>> +#ifdef ARCH_sim >>>>>> +#include <mcu/mcu_sim.h> >>>>>> +#endif >>>>>> + >>>>>> +/* Init all tasks */ >>>>>> +volatile int tasks_initialized; >>>>>> +int init_tasks(void); >>>>>> + >>>>>> +/* Task 1 */ >>>>>> +#define TASK1_PRIO (8) >>>>>> +#define TASK1_STACK_SIZE OS_STACK_ALIGN(192) >>>>>> +struct os_task task1; >>>>>> +os_stack_t stack1[TASK1_STACK_SIZE]; >>>>>> +static volatile int g_task1_loops; >>>>>> + >>>>>> +/* Task 2 */ >>>>>> +#define TASK2_PRIO (9) >>>>>> +#define TASK2_STACK_SIZE OS_STACK_ALIGN(128) >>>>>> +struct os_task task2; >>>>>> +os_stack_t stack2[TASK2_STACK_SIZE]; >>>>>> + >>>>>> +#define SHELL_TASK_PRIO (3) >>>>>> +#define SHELL_MAX_INPUT_LEN (256) >>>>>> +#define SHELL_TASK_STACK_SIZE (OS_STACK_ALIGN(384)) >>>>>> +os_stack_t shell_stack[SHELL_TASK_STACK_SIZE]; >>>>>> + >>>>>> +#define NEWTMGR_TASK_PRIO (4) >>>>>> +#define NEWTMGR_TASK_STACK_SIZE (OS_STACK_ALIGN(896)) >>>>>> +os_stack_t newtmgr_stack[NEWTMGR_TASK_STACK_SIZE]; >>>>>> + >>>>>> +static volatile int g_task2_loops; >>>>>> + >>>>>> +/* Global test semaphore */ >>>>>> +struct os_sem g_test_sem; >>>>>> + >>>>>> +/* For LED toggling */ >>>>>> +int g_led_pin; >>>>>> + >>>>>> +#ifdef NFFS_PRESENT >>>>>> +/* configuration file */ >>>>>> +#define MY_CONFIG_DIR "/cfg" >>>>>> +#define MY_CONFIG_FILE "/cfg/run" >>>>>> +#define MY_CONFIG_MAX_LINES 32 >>>>>> + >>>>>> +static struct conf_file my_conf = { >>>>>> + .cf_name = MY_CONFIG_FILE, >>>>>> + .cf_maxlines = MY_CONFIG_MAX_LINES >>>>>> +}; >>>>>> +#elif FCB_PRESENT >>>>>> +struct flash_area conf_fcb_area[NFFS_AREA_MAX + 1]; >>>>>> + >>>>>> +static struct conf_fcb my_conf = { >>>>>> + .cf_fcb.f_magic = 0xc09f6e5e, >>>>>> + .cf_fcb.f_sectors = conf_fcb_area >>>>>> +}; >>>>>> +#endif >>>>>> + >>>>>> +#define DEFAULT_MBUF_MPOOL_BUF_LEN (256) >>>>>> +#define DEFAULT_MBUF_MPOOL_NBUFS (10) >>>>>> + >>>>>> +uint8_t default_mbuf_mpool_data[DEFAULT_MBUF_MPOOL_BUF_LEN * >>>>>> + DEFAULT_MBUF_MPOOL_NBUFS]; >>>>>> + >>>>>> +struct os_mbuf_pool default_mbuf_pool; >>>>>> +struct os_mempool default_mbuf_mpool; >>>>>> + >>>>>> +static char *test_conf_get(int argc, char **argv, char *val, int >> max_len); >>>>>> +static int test_conf_set(int argc, char **argv, char *val); >>>>>> +static int test_conf_commit(void); >>>>>> +static int test_conf_export(void (*export_func)(char *name, char >> *val), >>>>>> + enum conf_export_tgt tgt); >>>>>> + >>>>>> +static struct conf_handler test_conf_handler = { >>>>>> + .ch_name = "test", >>>>>> + .ch_get = test_conf_get, >>>>>> + .ch_set = test_conf_set, >>>>>> + .ch_commit = test_conf_commit, >>>>>> + .ch_export = test_conf_export >>>>>> +}; >>>>>> + >>>>>> +static uint8_t test8; >>>>>> +static uint8_t test8_shadow; >>>>>> +static char test_str[32]; >>>>>> + >>>>>> +static char * >>>>>> +test_conf_get(int argc, char **argv, char *buf, int max_len) >>>>>> +{ >>>>>> + if (argc == 1) { >>>>>> + if (!strcmp(argv[0], "8")) { >>>>>> + return conf_str_from_value(CONF_INT8, &test8, buf, >> max_len); >>>>>> + } else if (!strcmp(argv[0], "str")) { >>>>>> + return test_str; >>>>>> + } >>>>>> + } >>>>>> + return NULL; >>>>>> +} >>>>>> + >>>>>> +static int >>>>>> +test_conf_set(int argc, char **argv, char *val) >>>>>> +{ >>>>>> + if (argc == 1) { >>>>>> + if (!strcmp(argv[0], "8")) { >>>>>> + return CONF_VALUE_SET(val, CONF_INT8, test8_shadow); >>>>>> + } else if (!strcmp(argv[0], "str")) { >>>>>> + return CONF_VALUE_SET(val, CONF_STRING, test_str); >>>>>> + } >>>>>> + } >>>>>> + return OS_ENOENT; >>>>>> +} >>>>>> + >>>>>> +static int >>>>>> +test_conf_commit(void) >>>>>> +{ >>>>>> + test8 = test8_shadow; >>>>>> + >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +static int >>>>>> +test_conf_export(void (*func)(char *name, char *val), enum >> conf_export_tgt tgt) >>>>>> +{ >>>>>> + char buf[4]; >>>>>> + >>>>>> + conf_str_from_value(CONF_INT8, &test8, buf, sizeof(buf)); >>>>>> + func("test/8", buf); >>>>>> + func("test/str", test_str); >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +void >>>>>> +task1_handler(void *arg) >>>>>> +{ >>>>>> + struct os_task *t; >>>>>> + >>>>>> + /* Set the led pin for the E407 devboard */ >>>>>> + g_led_pin = LED_BLINK_PIN; >>>>>> + hal_gpio_init_out(g_led_pin, 1); >>>>>> + >>>>>> + while (1) { >>>>>> + t = os_sched_get_current_task(); >>>>>> + assert(t->t_func == task1_handler); >>>>>> + >>>>>> + ++g_task1_loops; >>>>>> + >>>>>> + /* Wait one second */ >>>>>> + os_time_delay(1000); >>>>>> + >>>>>> + /* Toggle the LED */ >>>>>> + hal_gpio_toggle(g_led_pin); >>>>>> + >>>>>> + /* Release semaphore to task 2 */ >>>>>> + os_sem_release(&g_test_sem); >>>>>> + } >>>>>> +} >>>>>> + >>>>>> +#if 0 >>>>>> +#define SSD1306_DEV ARDUINO_ZERO_I2C >>>>>> + >>>>>> +static int >>>>>> +ssd1306_cli(int argc, char **argv) >>>>>> +{ >>>>>> + int rc; >>>>>> + >>>>>> + if (argc < 1) { >>>>>> + console_printf("too few args\n"); >>>>>> + return 0; >>>>>> + } >>>>>> + if (!strcmp(argv[1], "init")) { >>>>>> + rc = ssd1306_init(SSD1306_DEV); >>>>>> + console_printf("ssd1306_init() = %d\n", rc); >>>>>> + if (rc) { >>>>>> + return 0; >>>>>> + } >>>>>> + rc = ssd1306_enable(); >>>>>> + console_printf("ssd1306_enable() = %d\n", rc); >>>>>> + } else if (!strcmp(argv[1], "cls")) { >>>>>> + rc = ssd1306_fill(0); >>>>>> + console_printf("ssd1306_fill(0) = %d\n", rc); >>>>>> + } else if (!strcmp(argv[1], "fill")) { >>>>>> + rc = ssd1306_fill(255); >>>>>> + console_printf("ssd1306_fill(255) = %d\n", rc); >>>>>> + } >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +struct shell_cmd ssd1306_cli_cmd = { >>>>>> + .sc_cmd = "oled", >>>>>> + .sc_cmd_func = ssd1306_cli >>>>>> +}; >>>>>> +#endif >>>>>> + >>>>>> +#include <hal/hal_i2c.h> >>>>>> +#define GYRO_DEV 5 >>>>>> + >>>>>> +static int >>>>>> +mpu3050_cli(int argc, char **argv) >>>>>> +{ >>>>>> + int rc; >>>>>> + static struct mpu3050 gyro; >>>>>> + uint16_t x, y, z; >>>>>> + uint8_t reg, val; >>>>>> + >>>>>> + if (argc < 2) { >>>>>> + console_printf("too few args\n"); >>>>>> + return 0; >>>>>> + } >>>>>> + if (!strcmp(argv[1], "init")) { >>>>>> + rc = mpu3050_init(&gyro, GYRO_DEV, MPU3050_I2C_ADDR); >>>>>> + console_printf("mpu3050_init() = %d\n", rc); >>>>>> + if (rc) { >>>>>> + return 0; >>>>>> + } >>>>>> + } else if (!strcmp(argv[1], "raw")) { >>>>>> + rc = mpu3050_read_xyz(&gyro, &x, &y, &z); >>>>>> + console_printf("mpu3050_read_raw() = %d\n", rc); >>>>>> + if (rc == 0) { >>>>>> + console_printf("x=%d y=%d x=%d\n", x, y, z); >>>>>> + } >>>>>> + } else if (!strcmp(argv[1], "reg")) { >>>>>> + if (argc < 3) { >>>>>> + return 0; >>>>>> + } >>>>>> + >>>>>> + reg = strtoul(argv[2], 0, 0); >>>>>> + rc = mpu3050_read_reg(&gyro, reg, &val); >>>>>> + console_printf("mpu3050_read_reg(%d) = %d\n", reg, rc); >>>>>> + if (rc == 0) { >>>>>> + console_printf("val=%x\n", val); >>>>>> + } >>>>>> + } else if (!strcmp(argv[1], "probe")) { >>>>>> + uint32_t now, then; >>>>>> + if (argc < 3) { >>>>>> + console_printf("more args needed\n"); >>>>>> + return 0; >>>>>> + } >>>>>> + >>>>>> + val = strtoul(argv[2], 0, 0); >>>>>> + then = os_time_get(); >>>>>> + rc = hal_i2c_master_probe(0, 0x40, val); >>>>>> + now = os_time_get(); >>>>>> + console_printf("probe=%d %ld->%ld\n", rc, then, now); >>>>>> + } else { >>>>>> + console_printf("unknown cmd %s\n", argv[1]); >>>>>> + } >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +struct shell_cmd mpu3050_cli_cmd = { >>>>>> + .sc_cmd = "gyro", >>>>>> + .sc_cmd_func = mpu3050_cli >>>>>> +}; >>>>>> + >>>>>> +/** >>>>>> + * init_tasks >>>>>> + * >>>>>> + * Called by main.c after os_init(). This function performs >> initializations >>>>>> + * that are required before tasks are running. >>>>>> + * >>>>>> + * @return int 0 success; error otherwise. >>>>>> + */ >>>>>> +int >>>>>> +init_tasks(void) >>>>>> +{ >>>>>> + /* Initialize global test semaphore */ >>>>>> + os_sem_init(&g_test_sem, 0); >>>>>> + >>>>>> + os_task_init(&task1, "task1", task1_handler, NULL, >>>>>> + TASK1_PRIO, OS_WAIT_FOREVER, stack1, TASK1_STACK_SIZE); >>>>>> + >>>>>> + tasks_initialized = 1; >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +#ifdef NFFS_PRESENT >>>>>> +static void >>>>>> +setup_for_nffs(void) >>>>>> +{ >>>>>> + /* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header >> file. */ >>>>>> + struct nffs_area_desc descs[NFFS_AREA_MAX + 1]; >>>>>> + int cnt; >>>>>> + int rc; >>>>>> + >>>>>> + /* Initialize nffs's internal state. */ >>>>>> + rc = nffs_init(); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + /* Convert the set of flash blocks we intend to use for nffs >> into an array >>>>>> + * of nffs area descriptors. >>>>>> + */ >>>>>> + cnt = NFFS_AREA_MAX; >>>>>> + rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + /* Attempt to restore an existing nffs file system from flash. */ >>>>>> + if (nffs_detect(descs) == FS_ECORRUPT) { >>>>>> + /* No valid nffs instance detected; format a new one. */ >>>>>> + rc = nffs_format(descs); >>>>>> + assert(rc == 0); >>>>>> + } >>>>>> + >>>>>> + fs_mkdir(MY_CONFIG_DIR); >>>>>> + rc = conf_file_src(&my_conf); >>>>>> + assert(rc == 0); >>>>>> + rc = conf_file_dst(&my_conf); >>>>>> + assert(rc == 0); >>>>>> +} >>>>>> + >>>>>> +#elif FCB_PRESENT >>>>>> + >>>>>> +static void >>>>>> +setup_for_fcb(void) >>>>>> +{ >>>>>> + int cnt; >>>>>> + int rc; >>>>>> + >>>>>> + rc = flash_area_to_sectors(FLASH_AREA_NFFS, &cnt, NULL); >>>>>> + assert(rc == 0); >>>>>> + assert(cnt <= sizeof(conf_fcb_area) / sizeof(conf_fcb_area[0])); >>>>>> + flash_area_to_sectors(FLASH_AREA_NFFS, &cnt, conf_fcb_area); >>>>>> + >>>>>> + my_conf.cf_fcb.f_sector_cnt = cnt; >>>>>> + >>>>>> + rc = conf_fcb_src(&my_conf); >>>>>> + if (rc) { >>>>>> + for (cnt = 0; cnt < my_conf.cf_fcb.f_sector_cnt; cnt++) { >>>>>> + flash_area_erase(&conf_fcb_area[cnt], 0, >>>>>> + conf_fcb_area[cnt].fa_size); >>>>>> + } >>>>>> + rc = conf_fcb_src(&my_conf); >>>>>> + } >>>>>> + assert(rc == 0); >>>>>> + rc = conf_fcb_dst(&my_conf); >>>>>> + assert(rc == 0); >>>>>> +} >>>>>> + >>>>>> +#endif >>>>>> + >>>>>> +/** >>>>>> + * main >>>>>> + * >>>>>> + * The main function for the project. This function initializes the >> os, calls >>>>>> + * init_tasks to initialize tasks (and possibly other objects), then >> starts the >>>>>> + * OS. We should not return from os start. >>>>>> + * >>>>>> + * @return int NOTE: this function should never return! >>>>>> + */ >>>>>> +int >>>>>> +main(int argc, char **argv) >>>>>> +{ >>>>>> + int rc; >>>>>> + struct image_version ver; >>>>>> + >>>>>> +#ifdef ARCH_sim >>>>>> + mcu_sim_parse_args(argc, argv); >>>>>> +#endif >>>>>> + >>>>>> + conf_init(); >>>>>> + rc = conf_register(&test_conf_handler); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + os_init(); >>>>>> + >>>>>> + rc = os_mempool_init(&default_mbuf_mpool, >> DEFAULT_MBUF_MPOOL_NBUFS, >>>>>> + DEFAULT_MBUF_MPOOL_BUF_LEN, default_mbuf_mpool_data, >>>>>> + "default_mbuf_data"); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + rc = os_mbuf_pool_init(&default_mbuf_pool, &default_mbuf_mpool, >>>>>> + DEFAULT_MBUF_MPOOL_BUF_LEN, DEFAULT_MBUF_MPOOL_NBUFS); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + rc = os_msys_register(&default_mbuf_pool); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> + rc = hal_flash_init(); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> +#ifdef NFFS_PRESENT >>>>>> + setup_for_nffs(); >>>>>> +#elif FCB_PRESENT >>>>>> + setup_for_fcb(); >>>>>> +#endif >>>>>> + >>>>>> + id_init(); >>>>>> + >>>>>> + shell_task_init(SHELL_TASK_PRIO, shell_stack, >> SHELL_TASK_STACK_SIZE, >>>>>> + SHELL_MAX_INPUT_LEN); >>>>>> + >>>>>> + nmgr_task_init(NEWTMGR_TASK_PRIO, newtmgr_stack, >> NEWTMGR_TASK_STACK_SIZE); >>>>>> + imgmgr_module_init(); >>>>>> + >>>>>> + if (imgr_my_version(&ver) == 0) { >>>>>> + console_printf("\nSlinky %u.%u.%u.%u\n", >>>>>> + ver.iv_major, ver.iv_minor, ver.iv_revision, >>>>>> + (unsigned int)ver.iv_build_num); >>>>>> + } else { >>>>>> + console_printf("\nSlinky\n"); >>>>>> + } >>>>>> + >>>>>> +#if 0 >>>>>> + shell_cmd_register(&ssd1306_cli_cmd); >>>>>> +#endif >>>>>> + shell_cmd_register(&mpu3050_cli_cmd); >>>>>> + >>>>>> + conf_load(); >>>>>> + >>>>>> + rc = init_tasks(); >>>>>> + >>>>>> + os_start(); >>>>>> + >>>>>> + /* os start should never return. If it does, this should be an >> error */ >>>>>> + assert(0); >>>>>> + >>>>>> + return rc; >>>>>> +} >>>>>> + >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/slinky/src/main.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/slinky/src/main.c b/apps/slinky/src/main.c >>>>>> index 9007fdd..956ce38 100755 >>>>>> --- a/apps/slinky/src/main.c >>>>>> +++ b/apps/slinky/src/main.c >>>>>> @@ -61,11 +61,6 @@ static volatile int g_task1_loops; >>>>>> #define TASK2_STACK_SIZE OS_STACK_ALIGN(64) >>>>>> static struct os_task task2; >>>>>> >>>>>> -/* Task 3 */ >>>>>> -#define TASK3_PRIO (10) >>>>>> -#define TASK3_STACK_SIZE OS_STACK_ALIGN(512) >>>>>> -static struct os_task task3; >>>>>> - >>>>>> static struct log my_log; >>>>>> >>>>>> static volatile int g_task2_loops; >>>>>> @@ -106,8 +101,6 @@ static char test_str[32]; >>>>>> static uint32_t cbmem_buf[MAX_CBMEM_BUF]; >>>>>> static struct cbmem cbmem; >>>>>> >>>>>> -static struct os_eventq slinky_evq; >>>>>> - >>>>>> static char * >>>>>> test_conf_get(int argc, char **argv, char *buf, int max_len) >>>>>> { >>>>>> @@ -212,18 +205,6 @@ task2_handler(void *arg) >>>>>> } >>>>>> >>>>>> /** >>>>>> - * This task serves as a container for the shell and newtmgr >> packages. These >>>>>> - * packages enqueue timer events when they need this task to do work. >>>>>> - */ >>>>>> -static void >>>>>> -task3_handler(void *arg) >>>>>> -{ >>>>>> - while (1) { >>>>>> - os_eventq_run(&slinky_evq); >>>>>> - } >>>>>> -} >>>>>> - >>>>>> -/** >>>>>> * init_tasks >>>>>> * >>>>>> * Called by main.c after sysinit(). This function performs >> initializations >>>>>> @@ -250,19 +231,6 @@ init_tasks(void) >>>>>> >>>>>> os_task_init(&task2, "task2", task2_handler, NULL, >>>>>> TASK2_PRIO, OS_WAIT_FOREVER, pstack, TASK2_STACK_SIZE); >>>>>> - >>>>>> - pstack = malloc(sizeof(os_stack_t)*TASK3_STACK_SIZE); >>>>>> - assert(pstack); >>>>>> - >>>>>> - os_task_init(&task3, "task3", task3_handler, NULL, >>>>>> - TASK3_PRIO, OS_WAIT_FOREVER, pstack, TASK3_STACK_SIZE); >>>>>> - >>>>>> - /* Initialize eventq and designate it as the default. Packages >> that need >>>>>> - * to schedule work items will piggyback on this eventq. >> Example packages >>>>>> - * which do this are sys/shell and mgmt/newtmgr. >>>>>> - */ >>>>>> - os_eventq_init(&slinky_evq); >>>>>> - os_eventq_dflt_set(&slinky_evq); >>>>>> } >>>>>> >>>>>> /** >>>>>> @@ -318,10 +286,10 @@ main(int argc, char **argv) >>>>>> } >>>>>> #endif >>>>>> >>>>>> - os_start(); >>>>>> - >>>>>> - /* os start should never return. If it does, this should be an >> error */ >>>>>> - assert(0); >>>>>> - >>>>>> - return rc; >>>>>> + /* >>>>>> + * As the last thing, process events from default event queue. >>>>>> + */ >>>>>> + while (1) { >>>>>> + os_eventq_run(os_eventq_dflt_get()); >>>>>> + } >>>>>> } >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/apps/slinky/syscfg.yml >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/apps/slinky/syscfg.yml b/apps/slinky/syscfg.yml >>>>>> index 7438a81..1beee37 100644 >>>>>> --- a/apps/slinky/syscfg.yml >>>>>> +++ b/apps/slinky/syscfg.yml >>>>>> @@ -40,3 +40,6 @@ syscfg.vals: >>>>>> STATS_NEWTMGR: 1 >>>>>> LOG_NEWTMGR: 1 >>>>>> CONFIG_NEWTMGR: 1 >>>>>> + >>>>>> + OS_MAIN_TASK_PRIO: 10 >>>>>> + OS_MAIN_STACKS_SIZE: 512 >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/hw/mcu/native/src/hal_system.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/hw/mcu/native/src/hal_system.c b/hw/mcu/native/src/hal_ >> system.c >>>>>> index 5931c81..59927c9 100644 >>>>>> --- a/hw/mcu/native/src/hal_system.c >>>>>> +++ b/hw/mcu/native/src/hal_system.c >>>>>> @@ -26,6 +26,10 @@ >>>>>> #include "hal/hal_system.h" >>>>>> #include "mcu/mcu_sim.h" >>>>>> >>>>>> +#if MYNEWT_VAL(OS_SCHEDULING) >>>>>> +#include <os/os.h> >>>>>> +#endif >>>>>> + >>>>>> void >>>>>> hal_system_reset(void) >>>>>> { >>>>>> @@ -59,8 +63,14 @@ void >>>>>> mcu_sim_parse_args(int argc, char **argv) >>>>>> { >>>>>> int ch; >>>>>> - char *progname = argv[0]; >>>>>> + char *progname; >>>>>> >>>>>> +#if MYNEWT_VAL(OS_SCHEDULING) >>>>>> + if (g_os_started) { >>>>>> + return; >>>>>> + } >>>>>> +#endif >>>>>> + progname = argv[0]; >>>>>> while ((ch = getopt(argc, argv, "hf:u:")) != -1) { >>>>>> switch (ch) { >>>>>> case 'f': >>>>>> @@ -77,4 +87,8 @@ mcu_sim_parse_args(int argc, char **argv) >>>>>> break; >>>>>> } >>>>>> } >>>>>> +#if MYNEWT_VAL(OS_SCHEDULING) >>>>>> + os_init(); >>>>>> + os_start(); >>>>>> +#endif >>>>>> } >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/include/os/os.h >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/include/os/os.h b/kernel/os/include/os/os.h >>>>>> index 0939dac..17f42a8 100644 >>>>>> --- a/kernel/os/include/os/os.h >>>>>> +++ b/kernel/os/include/os/os.h >>>>>> @@ -83,6 +83,8 @@ enum os_error { >>>>>> typedef enum os_error os_error_t; >>>>>> >>>>>> #define OS_IDLE_PRIO (0xff) >>>>>> +#define OS_MAIN_TASK_PRIO MYNEWT_VAL(OS_MAIN_TASK_PRIO) >>>>>> +#define OS_MAIN_STACK_SIZE MYNEWT_VAL(OS_MAIN_STACK_SIZE) >>>>>> >>>>>> void os_init(void); >>>>>> void os_start(void); >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/include/os/os_eventq.h >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/include/os/os_eventq.h >> b/kernel/os/include/os/os_eventq.h >>>>>> index cfe0d34..092e724 100644 >>>>>> --- a/kernel/os/include/os/os_eventq.h >>>>>> +++ b/kernel/os/include/os/os_eventq.h >>>>>> @@ -53,7 +53,6 @@ struct os_event *os_eventq_get(struct os_eventq *); >>>>>> void os_eventq_run(struct os_eventq *evq); >>>>>> struct os_event *os_eventq_poll(struct os_eventq **, int, os_time_t); >>>>>> void os_eventq_remove(struct os_eventq *, struct os_event *); >>>>>> -void os_eventq_dflt_set(struct os_eventq *evq); >>>>>> struct os_eventq *os_eventq_dflt_get(void); >>>>>> void os_eventq_designate(struct os_eventq **dst, struct os_eventq >> *val, >>>>>> struct os_event *start_ev); >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/src/os.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/src/os.c b/kernel/os/src/os.c >>>>>> index 6dfe128..374f5f1 100644 >>>>>> --- a/kernel/os/src/os.c >>>>>> +++ b/kernel/os/src/os.c >>>>>> @@ -42,6 +42,10 @@ struct os_task g_idle_task; >>>>>> os_stack_t g_idle_task_stack[OS_STACK_ALIGN(OS_IDLE_STACK_SIZE)]; >>>>>> >>>>>> uint32_t g_os_idle_ctr; >>>>>> + >>>>>> +static struct os_task os_main_task; >>>>>> +static os_stack_t os_main_stack[OS_STACK_ALIGN(OS_MAIN_STACK_SIZE)]; >>>>>> + >>>>>> /* Default zero. Set by the architecture specific code when os is >> started. >>>>>> */ >>>>>> int g_os_started; >>>>>> @@ -123,6 +127,21 @@ os_started(void) >>>>>> return (g_os_started); >>>>>> } >>>>>> >>>>>> +static void >>>>>> +os_main(void *arg) >>>>>> +{ >>>>>> + extern int main(int argc, char **argv); >>>>>> + >>>>>> + os_eventq_init(os_eventq_dflt_get()); >>>>>> +#if !MYNEWT_VAL(SELFTEST) >>>>>> + main(0, NULL); >>>>>> +#else >>>>>> + while (1) { >>>>>> + os_eventq_run(os_eventq_dflt_get()); >>>>>> + } >>>>>> +#endif >>>>>> + assert(0); >>>>>> +} >>>>>> >>>>>> void >>>>>> os_init_idle_task(void) >>>>>> @@ -138,6 +157,11 @@ os_init_idle_task(void) >>>>>> rc = os_sanity_init(); >>>>>> assert(rc == 0); >>>>>> >>>>>> + rc = os_task_init(&os_main_task, "main", os_main, NULL, >>>>>> + OS_MAIN_TASK_PRIO, OS_WAIT_FOREVER, os_main_stack, >>>>>> + OS_STACK_ALIGN(OS_MAIN_STACK_SIZE)); >>>>>> + assert(rc == 0); >>>>>> + >>>>>> assert(MYNEWT_VAL(WATCHDOG_INTERVAL) - 200 > >> MYNEWT_VAL(SANITY_INTERVAL)); >>>>>> >>>>>> rc = hal_watchdog_init(MYNEWT_VAL(WATCHDOG_INTERVAL)); >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/src/os_eventq.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/src/os_eventq.c b/kernel/os/src/os_eventq.c >>>>>> index d443dfd..d5be9ae 100644 >>>>>> --- a/kernel/os/src/os_eventq.c >>>>>> +++ b/kernel/os/src/os_eventq.c >>>>>> @@ -29,7 +29,7 @@ >>>>>> * @{ >>>>>> */ >>>>>> >>>>>> -static struct os_eventq *os_eventq_main; >>>>>> +static struct os_eventq os_eventq_main; >>>>>> >>>>>> /** >>>>>> * Initialize the event queue >>>>>> @@ -279,29 +279,14 @@ os_eventq_remove(struct os_eventq *evq, struct >> os_event *ev) >>>>>> } >>>>>> >>>>>> /** >>>>>> - * Assigns the default event queue. Packages which require an event >> queue, and >>>>>> - * which haven't been explicitly told which one to use, will use >> this one >>>>>> - * automatically. >>>>>> + * Retrieves the default event queue processed by OS main task. >>>>>> * >>>>>> - * @param evq The event queue to designate as the >> default. >>>>>> - */ >>>>>> -void >>>>>> -os_eventq_dflt_set(struct os_eventq *evq) >>>>>> -{ >>>>>> - os_eventq_main = evq; >>>>>> -} >>>>>> - >>>>>> -/** >>>>>> - * Retrieves the default event queue, if any. The default event >> queue is >>>>>> - * designated via a call to os_eventq_dflt_set(). >>>>>> - * >>>>>> - * @return The default event queue, no NULL if >> there isn't >>>>>> - * any. >>>>>> + * @return The default event queue. >>>>>> */ >>>>>> struct os_eventq * >>>>>> os_eventq_dflt_get(void) >>>>>> { >>>>>> - return os_eventq_main; >>>>>> + return &os_eventq_main; >>>>>> } >>>>>> >>>>>> void >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/syscfg.yml >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/syscfg.yml b/kernel/os/syscfg.yml >>>>>> index e175bce..e329059 100644 >>>>>> --- a/kernel/os/syscfg.yml >>>>>> +++ b/kernel/os/syscfg.yml >>>>>> @@ -19,6 +19,12 @@ >>>>>> # Package: kernel/os >>>>>> >>>>>> syscfg.defs: >>>>>> + OS_MAIN_TASK_PRIO: >>>>>> + description: 'Priority of initialization and main task' >>>>>> + value: 0xfe >>>>>> + OS_MAIN_STACK_SIZE: >>>>>> + description: 'Stack size of initialization and main task' >>>>>> + value: 1024 >>>>>> OS_CLI: >>>>>> description: 'TBD' >>>>>> value: 0 >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/eventq_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/eventq_test.c >> b/kernel/os/test/src/eventq_test.c >>>>>> index 01e8f3f..a48546d 100644 >>>>>> --- a/kernel/os/test/src/eventq_test.c >>>>>> +++ b/kernel/os/test/src/eventq_test.c >>>>>> @@ -197,7 +197,6 @@ eventq_task_poll_timeout_send(void *arg) >>>>>> >>>>>> /* This task sleeps until the receive task completes the test. */ >>>>>> os_time_delay(1000000); >>>>>> - >>>>>> } >>>>>> >>>>>> /* Receiving multiple event queues with a time failure */ >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/mempool_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/mempool_test.c >> b/kernel/os/test/src/mempool_test.c >>>>>> index 7d86c2c..5be2aca 100644 >>>>>> --- a/kernel/os/test/src/mempool_test.c >>>>>> +++ b/kernel/os/test/src/mempool_test.c >>>>>> @@ -60,6 +60,7 @@ mempool_test_get_pool_size(int num_blocks, int >> block_size) >>>>>> void >>>>>> os_mempool_ts_pretest(void* arg) >>>>>> { >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> } >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/mutex_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/mutex_test.c >> b/kernel/os/test/src/mutex_test.c >>>>>> index 6f8ee69..ae05a27 100644 >>>>>> --- a/kernel/os/test/src/mutex_test.c >>>>>> +++ b/kernel/os/test/src/mutex_test.c >>>>>> @@ -296,7 +296,7 @@ mutex_task3_handler(void *arg) >>>>>> } >>>>>> } >>>>>> >>>>>> -void >>>>>> +void >>>>>> mutex_task4_handler(void *arg) >>>>>> { >>>>>> os_error_t err; >>>>>> @@ -335,6 +335,7 @@ os_mutex_tc_pretest(void* arg) >>>>>> /* >>>>>> * Only call if running in "native" simulated environment >>>>>> */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> return; >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/os_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/os_test.c >> b/kernel/os/test/src/os_test.c >>>>>> index 2e5bf9d..33b0868 100644 >>>>>> --- a/kernel/os/test/src/os_test.c >>>>>> +++ b/kernel/os/test/src/os_test.c >>>>>> @@ -73,6 +73,7 @@ os_test_restart(void) >>>>>> void >>>>>> os_selftest_pretest_cb(void* arg) >>>>>> { >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> } >>>>>> >>>>>> @@ -92,10 +93,10 @@ os_test_all(void) >>>>>> >>>>>> tu_suite_set_init_cb(os_mempool_test_init, NULL); >>>>>> os_mempool_test_suite(); >>>>>> - >>>>>> +#if 1 >>>>>> tu_suite_set_init_cb(os_mutex_test_init, NULL); >>>>>> os_mutex_test_suite(); >>>>>> - >>>>>> +#endif >>>>>> tu_suite_set_init_cb(os_sem_test_init, NULL); >>>>>> os_sem_test_suite(); >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/sem_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/sem_test.c >> b/kernel/os/test/src/sem_test.c >>>>>> index 98348b4..42e7bfe 100644 >>>>>> --- a/kernel/os/test/src/sem_test.c >>>>>> +++ b/kernel/os/test/src/sem_test.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> @@ -44,23 +44,23 @@ os_stack_t *stack4; >>>>>> struct os_sem g_sem1; >>>>>> #endif /* MYNEWT_VAL(SELFTEST) */ >>>>>> >>>>>> -/* >>>>>> +/* >>>>>> * TEST NUMBERS: >>>>>> * 10: In this test we have the highest priority task getting the >> semaphore >>>>>> * then sleeping. Two lower priority tasks then wake up and attempt >> to get >>>>>> * the semaphore. They are blocked until the higher priority task >> releases >>>>>> * the semaphore, at which point the lower priority tasks should wake >> up in >>>>>> * order, get the semaphore, then release it and go back to sleep. >>>>>> - * >>>>>> + * >>>>>> */ >>>>>> char sem_test_buf[128]; >>>>>> >>>>>> /** >>>>>> * sem test disp sem >>>>>> - * >>>>>> - * Display semaphore contents >>>>>> - * >>>>>> - * @param sem >>>>>> + * >>>>>> + * Display semaphore contents >>>>>> + * >>>>>> + * @param sem >>>>>> */ >>>>>> const char * >>>>>> sem_test_sem_to_s(const struct os_sem *sem) >>>>>> @@ -71,7 +71,7 @@ sem_test_sem_to_s(const struct os_sem *sem) >>>>>> return sem_test_buf; >>>>>> } >>>>>> >>>>>> -void >>>>>> +void >>>>>> sem_test_sleep_task_handler(void *arg) >>>>>> { >>>>>> struct os_task *t; >>>>>> @@ -104,13 +104,13 @@ sem_test_pend_release_loop(int delay, int >> timeout, int itvl) >>>>>> } >>>>>> >>>>>> /** >>>>>> - * sem test basic >>>>>> - * >>>>>> + * sem test basic >>>>>> + * >>>>>> * Basic semaphore tests >>>>>> - * >>>>>> - * @return int >>>>>> + * >>>>>> + * @return int >>>>>> */ >>>>>> -void >>>>>> +void >>>>>> sem_test_basic_handler(void *arg) >>>>>> { >>>>>> struct os_task *t; >>>>>> @@ -178,7 +178,7 @@ sem_test_basic_handler(void *arg) >>>>>> #endif >>>>>> } >>>>>> >>>>>> -void >>>>>> +void >>>>>> sem_test_1_task1_handler(void *arg) >>>>>> { >>>>>> os_error_t err; >>>>>> @@ -208,69 +208,69 @@ sem_test_1_task1_handler(void *arg) >>>>>> #endif >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_1_task2_handler(void *arg) >>>>>> +void >>>>>> +sem_test_1_task2_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, OS_TICKS_PER_SEC / 10, >>>>>> OS_TICKS_PER_SEC / 10); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_1_task3_handler(void *arg) >>>>>> +void >>>>>> +sem_test_1_task3_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, OS_TIMEOUT_NEVER, OS_TICKS_PER_SEC * >> 2); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_2_task2_handler(void *arg) >>>>>> +void >>>>>> +sem_test_2_task2_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_2_task3_handler(void *arg) >>>>>> +void >>>>>> +sem_test_2_task3_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, OS_TIMEOUT_NEVER, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_2_task4_handler(void *arg) >>>>>> +void >>>>>> +sem_test_2_task4_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_3_task2_handler(void *arg) >>>>>> +void >>>>>> +sem_test_3_task2_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(100, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_3_task3_handler(void *arg) >>>>>> +void >>>>>> +sem_test_3_task3_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(150, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_3_task4_handler(void *arg) >>>>>> +void >>>>>> +sem_test_3_task4_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_4_task2_handler(void *arg) >>>>>> +void >>>>>> +sem_test_4_task2_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(60, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_4_task3_handler(void *arg) >>>>>> +void >>>>>> +sem_test_4_task3_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(60, 2000, 2000); >>>>>> } >>>>>> >>>>>> -void >>>>>> -sem_test_4_task4_handler(void *arg) >>>>>> +void >>>>>> +sem_test_4_task4_handler(void *arg) >>>>>> { >>>>>> sem_test_pend_release_loop(0, 2000, 2000); >>>>>> } >>>>>> @@ -279,6 +279,7 @@ void >>>>>> os_sem_tc_pretest(void* arg) >>>>>> { >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> return; >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/event_test_poll_0timo.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/event_test_poll_0timo.c >> b/kernel/os/test/src/testcases/event_test_poll_0timo.c >>>>>> index 5e86395..b53418e 100644 >>>>>> --- a/kernel/os/test/src/testcases/event_test_poll_0timo.c >>>>>> +++ b/kernel/os/test/src/testcases/event_test_poll_0timo.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/event_test_ >> poll_single_sr.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/event_test_poll_single_sr.c >> b/kernel/os/test/src/testcases/event_test_poll_single_sr.c >>>>>> index 122980e..72e1a5f 100644 >>>>>> --- a/kernel/os/test/src/testcases/event_test_poll_single_sr.c >>>>>> +++ b/kernel/os/test/src/testcases/event_test_poll_single_sr.c >>>>>> @@ -26,10 +26,11 @@ TEST_CASE(event_test_poll_single_sr) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> /* Initialize the task */ >>>>>> - os_task_init(&eventq_task_poll_single_s, >> "eventq_task_poll_single_s", >>>>>> + os_task_init(&eventq_task_poll_single_s, >> "eventq_task_poll_single_s", >>>>>> eventq_task_poll_single_send, NULL, SEND_TASK_POLL_SINGLE_PRIO, >>>>>> OS_WAIT_FOREVER, eventq_task_stack_poll_single_s, >> POLL_STACK_SIZE); >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/event_test_poll_sr.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/event_test_poll_sr.c >> b/kernel/os/test/src/testcases/event_test_poll_sr.c >>>>>> index 1d003d5..e981839 100644 >>>>>> --- a/kernel/os/test/src/testcases/event_test_poll_sr.c >>>>>> +++ b/kernel/os/test/src/testcases/event_test_poll_sr.c >>>>>> @@ -25,6 +25,7 @@ TEST_CASE(event_test_poll_sr) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> /* Initialize the task */ >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/event_test_ >> poll_timeout_sr.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/event_test_poll_timeout_sr.c >> b/kernel/os/test/src/testcases/event_test_poll_timeout_sr.c >>>>>> index 3972fa4..d7bccee 100644 >>>>>> --- a/kernel/os/test/src/testcases/event_test_poll_timeout_sr.c >>>>>> +++ b/kernel/os/test/src/testcases/event_test_poll_timeout_sr.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> @@ -25,10 +25,11 @@ TEST_CASE(event_test_poll_timeout_sr) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> /* Initialize the task */ >>>>>> - os_task_init(&eventq_task_poll_timeout_s, >> "eventq_task_poll_timeout_s", >>>>>> + os_task_init(&eventq_task_poll_timeout_s, >> "eventq_task_poll_timeout_s", >>>>>> eventq_task_poll_timeout_send, NULL, >> SEND_TASK_POLL_TIMEOUT_PRIO, >>>>>> OS_WAIT_FOREVER, eventq_task_stack_poll_timeout_s, >> POLL_STACK_SIZE); >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/event_test_src.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/event_test_src.c >> b/kernel/os/test/src/testcases/event_test_src.c >>>>>> index 9d3e35b..f1adbea 100644 >>>>>> --- a/kernel/os/test/src/testcases/event_test_src.c >>>>>> +++ b/kernel/os/test/src/testcases/event_test_src.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> @@ -24,6 +24,7 @@ TEST_CASE(event_test_sr) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> /* Initialize the task */ >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/os_callout_test.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/os_callout_test.c >> b/kernel/os/test/src/testcases/os_callout_test.c >>>>>> index fdc2926..a03570a 100644 >>>>>> --- a/kernel/os/test/src/testcases/os_callout_test.c >>>>>> +++ b/kernel/os/test/src/testcases/os_callout_test.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> @@ -24,9 +24,10 @@ TEST_CASE(callout_test) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> - >>>>>> + >>>>>> /* Initialize the sending task */ >>>>>> os_task_init(&callout_task_struct_send, "callout_task_send", >>>>>> callout_task_send, NULL, SEND_CALLOUT_TASK_PRIO, >> OS_WAIT_FOREVER, >>>>>> @@ -38,7 +39,7 @@ TEST_CASE(callout_test) >>>>>> callout_task_stack_receive, CALLOUT_STACK_SIZE); >>>>>> >>>>>> os_eventq_init(&callout_evq); >>>>>> - >>>>>> + >>>>>> /* Initialize the callout function */ >>>>>> os_callout_init(&callout_test_c, &callout_evq, my_callout, NULL); >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/os_callout_test_speak.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/os_callout_test_speak.c >> b/kernel/os/test/src/testcases/os_callout_test_speak.c >>>>>> index 2d08085..de8664f 100644 >>>>>> --- a/kernel/os/test/src/testcases/os_callout_test_speak.c >>>>>> +++ b/kernel/os/test/src/testcases/os_callout_test_speak.c >>>>>> @@ -24,9 +24,10 @@ TEST_CASE(callout_test_speak) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> - >>>>>> + >>>>>> /* Initialize the sending task */ >>>>>> os_task_init(&callout_task_struct_speak, "callout_task_speak", >>>>>> callout_task_stop_speak, NULL, SPEAK_CALLOUT_TASK_PRIO, >>>>>> @@ -38,10 +39,10 @@ TEST_CASE(callout_test_speak) >>>>>> OS_WAIT_FOREVER, callout_task_stack_listen, CALLOUT_STACK_SIZE); >>>>>> >>>>>> os_eventq_init(&callout_evq); >>>>>> - >>>>>> + >>>>>> /* Initialize the callout function */ >>>>>> os_callout_init(&callout_speak, &callout_evq, >>>>>> - my_callout_speak_func, NULL); >>>>>> + my_callout_speak_func, NULL); >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Does not return until OS_restart is called */ >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/kernel/os/test/src/testcases/os_callout_test_stop.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/kernel/os/test/src/testcases/os_callout_test_stop.c >> b/kernel/os/test/src/testcases/os_callout_test_stop.c >>>>>> index 15733c1..6b1a8e7 100644 >>>>>> --- a/kernel/os/test/src/testcases/os_callout_test_stop.c >>>>>> +++ b/kernel/os/test/src/testcases/os_callout_test_stop.c >>>>>> @@ -6,7 +6,7 @@ >>>>>> * to you under the Apache License, Version 2.0 (the >>>>>> * "License"); you may not use this file except in compliance >>>>>> * with the License. You may obtain a copy of the License at >>>>>> - * >>>>>> + * >>>>>> * http://www.apache.org/licenses/LICENSE-2.0 >>>>>> * >>>>>> * Unless required by applicable law or agreed to in writing, >>>>>> @@ -25,6 +25,7 @@ TEST_CASE(callout_test_stop) >>>>>> >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> /* Initializing the OS */ >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> >>>>>> @@ -39,12 +40,12 @@ TEST_CASE(callout_test_stop) >>>>>> RECEIVE_STOP_CALLOUT_TASK_PRIO, OS_WAIT_FOREVER, >>>>>> callout_task_stack_stop_receive, CALLOUT_STACK_SIZE); >>>>>> >>>>>> - for(k = 0; k< MULTI_SIZE; k++){ >>>>>> + for(k = 0; k < MULTI_SIZE; k++){ >>>>>> os_eventq_init(&callout_stop_evq[k]); >>>>>> } >>>>>> - >>>>>> + >>>>>> /* Initialize the callout function */ >>>>>> - for(k = 0; k<MULTI_SIZE; k++){ >>>>>> + for (k = 0; k < MULTI_SIZE; k++){ >>>>>> os_callout_init(&callout_stop_test[k], &callout_stop_evq[k], >>>>>> my_callout_stop_func, NULL); >>>>>> } >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/libc/baselibc/src/start.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/libc/baselibc/src/start.c b/libc/baselibc/src/start.c >>>>>> index 9848c76..febf5b2 100644 >>>>>> --- a/libc/baselibc/src/start.c >>>>>> +++ b/libc/baselibc/src/start.c >>>>>> @@ -18,17 +18,26 @@ >>>>>> */ >>>>>> #include <stdlib.h> >>>>>> >>>>>> +#include <sysinit/sysinit.h> >>>>>> + >>>>>> extern int main(int argc, char **argv); >>>>>> +extern void os_init(void); >>>>>> +extern void os_start(void); >>>>>> >>>>>> /* >>>>>> * Rudimentary startup function. >>>>>> */ >>>>>> void _start(void) >>>>>> { >>>>>> +#if !MYNEWT_VAL(OS_SCHEDULING) >>>>>> int rc; >>>>>> >>>>>> rc = main(0, NULL); >>>>>> exit(rc); >>>>>> +#else >>>>>> + os_init(); >>>>>> + os_start(); >>>>>> +#endif >>>>>> } >>>>>> >>>>>> void >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/net/ip/mn_socket/test/src/testcases/socket_tests.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/net/ip/mn_socket/test/src/testcases/socket_tests.c >> b/net/ip/mn_socket/test/src/testcases/socket_tests.c >>>>>> index 3a81cc8..8bfc2b8 100644 >>>>>> --- a/net/ip/mn_socket/test/src/testcases/socket_tests.c >>>>>> +++ b/net/ip/mn_socket/test/src/testcases/socket_tests.c >>>>>> @@ -20,6 +20,7 @@ >>>>>> >>>>>> TEST_CASE(socket_tests) >>>>>> { >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> >>>>>> os_sem_init(&test_sem, 0); >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-mynewt- >> core/blob/0c9fe5e2/test/testutil/src/testutil.c >>>>>> ------------------------------------------------------------ >> ---------- >>>>>> diff --git a/test/testutil/src/testutil.c >> b/test/testutil/src/testutil.c >>>>>> index 6abb62b..9a1c0fe 100644 >>>>>> --- a/test/testutil/src/testutil.c >>>>>> +++ b/test/testutil/src/testutil.c >>>>>> @@ -41,6 +41,7 @@ int >>>>>> tu_init(void) >>>>>> { >>>>>> #if MYNEWT_VAL(SELFTEST) >>>>>> + os_init(); >>>>>> sysinit(); >>>>>> #endif >>>>>> >>>>>> >>>>>> >>> >> >>
