Merge current larva changes into tadpole
diff --git a/libs/os/include/os/arch/arm/os/os_arch.h b/libs/os/include/os/arch/arm/os/os_arch.h
deleted file mode 100755
index 0917dec..0000000
--- a/libs/os/include/os/arch/arm/os/os_arch.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed 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.
- */
-
-#ifndef _OS_ARCH_ARM_H
-#define _OS_ARCH_ARM_H
-
-#include <stdint.h>
-
-struct os_task;
-
-/* Run in priviliged or unprivileged Thread mode */
-#define OS_RUN_UNPRIV (0)
-#define OS_RUN_PRIV (1)
-
-/* Time tick in miliseconds that the OS runs */
-#define OS_TIME_TICK (1)
-#define OS_TICKS_PER_SEC (OS_TIME_TICK * 1000)
-
-/* CPU status register */
-typedef uint32_t os_sr_t;
-/* Stack type, aligned to a 32-bit word. */
-#define OS_STACK_PATTERN (0xdeadbeef)
-
-typedef uint32_t os_stack_t;
-#define OS_ALIGNMENT (4)
-#define OS_STACK_ALIGNMENT (8)
-
-#define OS_STACK_ALIGN(__nmemb) \
- (OS_ALIGN((__nmemb), OS_STACK_ALIGNMENT))
-
-/* Enter a critical section, save processor state, and block interrupts */
-#define OS_ENTER_CRITICAL(__os_sr) (__os_sr = os_arch_save_sr())
-/* Exit a critical section, restore processor state and unblock interrupts */
-#define OS_EXIT_CRITICAL(__os_sr) (os_arch_restore_sr(__os_sr))
-
-/* Define special stackos sections */
-#define sec_data_core __attribute__((section(".data.core")))
-#define sec_bss_core __attribute__((section(".bss.core")))
-#define sec_bss_nz_core __attribute__((section(".bss.core.nz")))
-
-/* Define "assert" funtion */
-void _Die(char *file, int line);
-
-os_stack_t *os_arch_task_stack_init(struct os_task *, os_stack_t *, int);
-void timer_handler(void);
-void os_arch_ctx_sw(struct os_task *);
-void os_arch_ctx_sw_isr(struct os_task *);
-os_sr_t os_arch_save_sr(void);
-void os_arch_restore_sr(os_sr_t);
-void os_arch_init(void);
-uint32_t os_arch_start(void);
-os_error_t os_arch_os_init(void);
-os_error_t os_arch_os_start(void);
-void os_set_env(void);
-void os_arch_init_task_stack(os_stack_t *sf);
-
-/* External function prototypes supplied by BSP */
-void os_bsp_systick_init(uint32_t os_tick_usecs);
-void os_bsp_init(void);
-void os_bsp_ctx_sw(void);
-
-#endif /* _OS_ARCH_X86_H */
diff --git a/libs/os/include/os/os_mbuf.h b/libs/os/include/os/os_mbuf.h
index 280b75f..efc4cc9 100644
--- a/libs/os/include/os/os_mbuf.h
+++ b/libs/os/include/os/os_mbuf.h
@@ -112,7 +112,8 @@
((__om)->om_flags & OS_MBUF_F_MASK(OS_MBUF_F_PKTHDR))
-#define OS_MBUF_PKTHDR(__om) ((struct os_mbuf_pkthdr *) &(__om)->om_databuf[0])
+#define OS_MBUF_PKTHDR(__om) ((struct os_mbuf_pkthdr *) \
+ ((uint8_t *)&(__om)->om_data + sizeof(struct os_mbuf)))
/*
* Access the data of a mbuf, and cast it to type
@@ -123,9 +124,6 @@
#define OS_MBUF_DATA(__om, __type) \
(__type) ((__om)->om_data)
-
-
-
/**
* Returns the end offset of a mbuf buffer
*
diff --git a/libs/os/src/arch/arm/cortex-m/m4/HAL_CM4.s b/libs/os/src/arch/arm/cortex-m/m4/HAL_CM4.s
deleted file mode 100755
index 1c5651d..0000000
--- a/libs/os/src/arch/arm/cortex-m/m4/HAL_CM4.s
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed 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.
- */
-
-/*----------------------------------------------------------------------------
- * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * - Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *---------------------------------------------------------------------------*/
-
- .file "HAL_CM4.S"
- .syntax unified
-
-/*----------------------------------------------------------------------------
- * Functions
- *---------------------------------------------------------------------------*/
-
- .thumb
-
- .section ".text"
- .align 2
-
-/*--------------------------- os_set_env ------------------------------------*/
-# void os_set_env (void);
- /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
-
- .thumb_func
- .type os_set_env, %function
- .global os_set_env
-os_set_env:
- .fnstart
- .cantunwind
-
- MOV R0,SP /* PSP = MSP */
- MSR PSP,R0
- LDR R0,=os_flags
- LDRB R0,[R0]
- LSLS R0,#31
- ITE NE
- MOVNE R0,#0x02 /* Privileged Thread mode, use PSP */
- MOVEQ R0,#0x03 /* Unprivileged Thread mode, use PSP */
- MSR CONTROL,R0
- ISB
- BX LR
-
- .fnend
- .size os_set_env, .-os_set_env
-/*--------------------------- os_set_env ------------------------------------*/
-
-
-/*--------------------------- os_arch_init_task_stack------------------------*/
-# void os_arch_init_task_stack(os_stack_t *sf);
-# NOTE: This function only stores R4 through R11 on stack. The reason we do
-# this is that the application may have stored some values in some of the
-# registers and we want to preserve those values (position independent code
-# is a good example). The other registers are handled in the C startup code.
- .thumb_func
- .type os_arch_init_task_stack, %function
- .global os_arch_init_task_stack
-os_arch_init_task_stack:
- .fnstart
-
- STMIA R0,{R4-R11}
- BX LR
-
- .fnend
- .size os_arch_init_task_stack, .-os_arch_init_task_stack
-/*--------------------------- os_set_env ------------------------------------*/
-
-
-/*-------------------------- SVC_Handler ------------------------------------*/
-
-# void SVC_Handler (void);
-
- .thumb_func
- .type SVC_Handler, %function
- .global SVC_Handler
-SVC_Handler:
- .fnstart
- .cantunwind
-
- MRS R0,PSP /* Read PSP */
- LDR R1,[R0,#24] /* Read Saved PC from Stack */
- LDRB R1,[R1,#-2] /* Load SVC Number */
- CBNZ R1,SVC_User
-
- LDM R0,{R0-R3,R12} /* Read R0-R3,R12 from stack */
- PUSH {R4,LR} /* Save EXC_RETURN */
- BLX R12 /* Call SVC Function */
- POP {R4,LR} /* Restore EXC_RETURN */
-
- MRS R12,PSP /* Read PSP */
- STM R12,{R0-R2} /* Store return values */
- BX LR /* Return from interrupt */
-
- /*------------------- User SVC ------------------------------*/
-SVC_User:
- PUSH {R4,LR} /* Save EXC_RETURN */
- LDR R2,=SVC_Count
- LDR R2,[R2]
- CMP R1,R2
- BHI SVC_Done /* Overflow */
-
- LDR R4,=SVC_Table-4
- LDR R4,[R4,R1,LSL #2] /* Load SVC Function Address */
-
- LDM R0,{R0-R3,R12} /* Read R0-R3,R12 from stack */
- BLX R4 /* Call SVC Function */
-
- MRS R12,PSP
- STM R12,{R0-R3} /* Function return values */
-SVC_Done:
- POP {R4,LR} /* Restore EXC_RETURN */
- BX LR /* Return from interrupt */
-
- .fnend
- .size SVC_Handler, .-SVC_Handler
-
-
-/*-------------------------- PendSV_Handler ---------------------------------*/
-
-# void PendSV_Handler (void);
-
- .thumb_func
- .type PendSV_Handler, %function
- .global PendSV_Handler
-PendSV_Handler:
- .fnstart
- .cantunwind
-
- LDR R3,=g_os_run_list /* Get highest priority task ready to run */
- LDR R2,[R3] /* Store in R2 */
- LDR R3,=g_current_task /* Get current task */
- LDR R1,[R3] /* Current task in R1 */
- CMP R1,R2
- IT EQ
- BXEQ LR /* RETI, no task switch */
-
- MRS R12,PSP /* Read PSP */
- STMDB R12!,{R4-R11} /* Save Old context */
- STR R12,[R1,#0] /* Update stack pointer in current task */
- STR R2,[R3] /* g_current_task = highest ready */
-
- LDR R12,[R2,#0] /* get stack pointer of task we will start */
- LDMIA R12!,{R4-R11} /* Restore New Context */
- MSR PSP,R12 /* Write PSP */
- BX LR /* Return to Thread Mode */
-
- .fnend
- .size PendSV_Handler, .-PendSV_Handler
-
-
-/*-------------------------- SysTick_Handler --------------------------------*/
-
-# void SysTick_Handler (void);
- .thumb_func
- .type SysTick_Handler, %function
- .global SysTick_Handler
-SysTick_Handler:
- .fnstart
- .cantunwind
-
- PUSH {R4,LR} /* Save EXC_RETURN */
- BL timer_handler
- POP {R4,LR} /* Restore EXC_RETURN */
- BX LR
-
- .fnend
- .size SysTick_Handler, .-SysTick_Handler
-
- .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
diff --git a/libs/os/src/arch/arm/cortex-m/m4/SVC_Table.s b/libs/os/src/arch/arm/cortex-m/m4/SVC_Table.s
deleted file mode 100755
index 8a252f7..0000000
--- a/libs/os/src/arch/arm/cortex-m/m4/SVC_Table.s
+++ /dev/null
@@ -1,73 +0,0 @@
-; /**
-; * Copyright (c) 2015 Runtime Inc.
-; *
-; * Licensed 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.
-; */
-;
-;
-;/*----------------------------------------------------------------------------
-; * RL-ARM - RTX
-; *----------------------------------------------------------------------------
-; * Name: SVC_TABLE.S
-; * Purpose: Pre-defined SVC Table for Cortex-M
-; * Rev.: V4.70
-; *----------------------------------------------------------------------------
-; *
-; * Copyright (c) 1999-2009 KEIL, 2009-2013 ARM Germany GmbH
-; * All rights reserved.
-; * Redistribution and use in source and binary forms, with or without
-; * modification, are permitted provided that the following conditions are met:
-; * - Redistributions of source code must retain the above copyright
-; * notice, this list of conditions and the following disclaimer.
-; * - Redistributions in binary form must reproduce the above copyright
-; * notice, this list of conditions and the following disclaimer in the
-; * documentation and/or other materials provided with the distribution.
-; * - Neither the name of ARM nor the names of its contributors may be used
-; * to endorse or promote products derived from this software without
-; * specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; * POSSIBILITY OF SUCH DAMAGE.
-; *---------------------------------------------------------------------------*/
-
-
- .file "SVC_Table.S"
-
-
- .section ".svc_table"
-
- .global SVC_Table
-SVC_Table:
-/* Insert user SVC functions here. SVC 0 used by RTL Kernel. */
-# .long __SVC_1 /* user SVC function */
-SVC_End:
-
- .global SVC_Count
-SVC_Count:
- .long (SVC_End-SVC_Table)/4
-
-
- .end
-
-/*----------------------------------------------------------------------------
- * end of file
- *---------------------------------------------------------------------------*/
diff --git a/libs/os/src/arch/arm/cortex-m/os_arch_arm.c b/libs/os/src/arch/arm/cortex-m/os_arch_arm.c
deleted file mode 100755
index 2ef08da..0000000
--- a/libs/os/src/arch/arm/cortex-m/os_arch_arm.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed 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 "os/os_arch.h"
-
-/* XXX: How do we know which cortex to use? */
-#define __CMSIS_GENERIC
-#include "cmsis-core/core_cm4.h"
-
-/* Initial program status register */
-#define INITIAL_xPSR 0x01000000
-
-/* Stack frame structure */
-struct stack_frame {
- uint32_t r4;
- uint32_t r5;
- uint32_t r6;
- uint32_t r7;
- uint32_t r8;
- uint32_t r9;
- uint32_t r10;
- uint32_t r11;
- uint32_t r0;
- uint32_t r1;
- uint32_t r2;
- uint32_t r3;
- uint32_t r12;
- uint32_t lr;
- uint32_t pc;
- uint32_t xpsr;
-};
-
-int die_line;
-char *die_module;
-
-#define SVC_ArgN(n) \
- register int __r##n __asm("r"#n);
-
-#define SVC_Arg0() \
- SVC_ArgN(0) \
- SVC_ArgN(1) \
- SVC_ArgN(2) \
- SVC_ArgN(3)
-
-#if (defined (__CORTEX_M0)) || defined (__CORTEX_M0PLUS)
-#define SVC_Call(f) \
- __asm volatile \
- ( \
- "ldr r7,="#f"\n\t" \
- "mov r12,r7\n\t" \
- "svc 0" \
- : "=r" (__r0), "=r" (__r1), "=r" (__r2), "=r" (__r3) \
- : "r" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) \
- : "r7", "r12", "lr", "cc" \
- );
-#else
-#define SVC_Call(f) \
- __asm volatile \
- ( \
- "ldr r12,="#f"\n\t" \
- "svc 0" \
- : "=r" (__r0), "=r" (__r1), "=r" (__r2), "=r" (__r3) \
- : "r" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) \
- : "r12", "lr", "cc" \
- );
-#endif
-
-/* XXX: determine how we will deal with running un-privileged */
-uint32_t os_flags = OS_RUN_PRIV;
-
-void
-timer_handler(void)
-{
- os_time_tick();
- os_callout_tick();
- os_sched_os_timer_exp();
- os_sched(NULL, 1);
-}
-
-void
-os_arch_ctx_sw(struct os_task *t)
-{
- os_bsp_ctx_sw();
-}
-
-void
-os_arch_ctx_sw_isr(struct os_task *t)
-{
- os_bsp_ctx_sw();
-}
-
-os_sr_t
-os_arch_save_sr(void)
-{
- uint32_t isr_ctx;
-
- isr_ctx = __get_PRIMASK();
- __disable_irq();
- return (isr_ctx & 1);
-}
-
-void
-os_arch_restore_sr(os_sr_t isr_ctx)
-{
- if (!isr_ctx) {
- __enable_irq();
- }
-}
-
-void
-_Die(char *file, int line)
-{
- die_line = line;
- die_module = file;
- while (1) {
- }
-}
-
-os_stack_t *
-os_arch_task_stack_init(struct os_task *t, os_stack_t *stack_top, int size)
-{
- int i;
- os_stack_t *s;
- struct stack_frame *sf;
-
- /* Get stack frame pointer */
- s = (os_stack_t *) ((uint8_t *) stack_top - sizeof(*sf));
-
- /* Zero out R1-R3, R12, LR */
- for (i = 9; i < 14; ++i) {
- s[i] = 0;
- }
-
- /* Set registers R4 - R11 on stack. */
- os_arch_init_task_stack(s);
-
- /* Set remaining portions of stack frame */
- sf = (struct stack_frame *) s;
- sf->xpsr = INITIAL_xPSR;
- sf->pc = (uint32_t)t->t_func;
- sf->r0 = (uint32_t)t->t_arg;
-
- return (s);
-}
-
-void
-os_arch_init(void)
-{
- os_init_idle_task();
-}
-
-__attribute__((always_inline))
-static inline void
-svc_os_arch_init(void)
-{
- SVC_Arg0();
- SVC_Call(os_arch_init);
-}
-
-os_error_t
-os_arch_os_init(void)
-{
- os_error_t err;
-
- /* Cannot be called within an ISR */
- err = OS_ERR_IN_ISR;
- if (__get_IPSR() == 0) {
- err = OS_OK;
-
- /* Call bsp related OS initializations */
- os_bsp_init();
-
- /*
- * Set the os environment. This will set stack pointers and, based
- * on the contents of os_flags, will determine if the tasks run in
- * priviliged or un-privileged mode.
- */
- os_set_env();
-
- /* Check if priviliged or not */
- if ((__get_CONTROL() & 1) == 0) {
- os_arch_init();
- } else {
- svc_os_arch_init();
- }
- }
-
- return err;
-}
-
-uint32_t
-os_arch_start(void)
-{
- struct os_task *t;
-
- /* Get the highest priority ready to run to set the current task */
- t = os_sched_next_task();
- os_sched_set_current_task(t);
-
- /* Adjust PSP so it looks like this task just took an exception */
- __set_PSP((uint32_t)t->t_stackptr + offsetof(struct stack_frame, r0));
-
- /* Intitialize and start system clock timer */
- os_bsp_systick_init(OS_TIME_TICK * 1000);
-
- /* Mark the OS as started, right before we run our first task */
- g_os_started = 1;
-
- /* Perform context switch */
- os_arch_ctx_sw(t);
-
- return (uint32_t)(t->t_arg);
-}
-
-__attribute__((always_inline))
-static inline void svc_os_arch_start(void)
-{
- SVC_Arg0();
- SVC_Call(os_arch_start);
-}
-
-os_error_t
-os_arch_os_start(void)
-{
- os_error_t err;
-
- err = OS_ERR_IN_ISR;
- if (__get_IPSR() == 0) {
- /*
- * The following switch statement is really just a sanity check to
- * insure that the os initialization routine was called prior to the
- * os start routine.
- */
- err = OS_OK;
- switch (__get_CONTROL() & 0x03) {
- /*
- * These two cases are for completeness. Thread mode should be set
- * to use PSP already.
- *
- * Fall-through intentional!
- */
- case 0x00:
- case 0x01:
- err = OS_ERR_PRIV;
- break;
- case 0x02:
- /* Privileged Thread mode w/SP = PSP */
- if ((os_flags & 1) == 0) {
- err = OS_ERR_PRIV;
- }
- break;
- case 0x03:
- /* Unpriviliged thread mode w/sp = PSP */
- if (os_flags & 1) {
- err = OS_ERR_PRIV;
- }
- break;
- }
- if (err == OS_OK) {
- /* Always start OS through SVC call */
- svc_os_arch_start();
- }
- }
-
- return err;
-}
-
diff --git a/libs/os/src/test/arch/arm/os_test_arch_arm.c b/libs/os/src/test/arch/arm/os_test_arch_arm.c
deleted file mode 100644
index 914f43f..0000000
--- a/libs/os/src/test/arch/arm/os_test_arch_arm.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed 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 "testutil/testutil.h"
-#include "os_test_priv.h"
-
-void
-os_test_restart(void)
-{
- tu_restart();
-}