<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../../../img/favicon.ico">

        <title>toc - Apache Mynewt</title>

        <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../../css/highlight.css">
        <link href="../../../../css/base.css" rel="stylesheet">
        <link href="../../../../css/custom.css" rel="stylesheet">
        <link href="../../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="toc">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" selected="selected" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../../tutorials/tutorials/">Tutorials</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os_user_guide/">OS User Guide</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../mynewt_os/">OS Core</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li><a href="
  ../../os_started/
">Functions</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../context_switch/context_switch/">Scheduler</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../cputime/os_cputime/">CPU Time</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../time/os_time/">OS Time</a>
  
  
    </li>

              
          
              
                
  
  
    <li class="active"><a href="./">Tasks</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li><a href="
  ../os_task_count/
">Functions</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../event_queue/event_queue/">Event Queues</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../semaphore/semaphore/">Semaphores</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../mutex/mutex/">Mutexes</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../memory_pool/memory_pool/">Memory Pools</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../heap/heap/">Heap</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  
  
  ../../mbuf/mbuf/

">Memory Buffers</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../sanity/sanity/">Sanity</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../callout/callout/">Callouts</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../porting/port_os/">Porting to your Platform</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/console/console/">Console</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/shell/shell/">Shell</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/split/split/">Split Images</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/bootloader/bootloader/">Bootloader</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  
  
  ../../../modules/fs/fs/fs/

">File System</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/hal/hal/">Hardware Abstraction Layer</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/drivers/driver/">Drivers</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/testutil/testutil/">Test Utilities</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/devmgmt/newtmgr/">Device Management with Newt Manager</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/imgmgr/imgmgr/">Image Manager</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../modules/baselibc/">Baselibc library</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/json/json/">JSON</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/fcb/fcb/">Flash Circular Buffer</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/stats/stats/">Stats</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/logs/logs/">Logs</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../modules/sysinitconfig/sysinitconfig/">System Configuration And Initialization</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../../faq/go_env/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; Tasks</li>
        
      
        
          <li>&raquo; <a href="os/core_os/mynewt_os/">OS Core</a></li>
        
      
        
          <li>&raquo; <a href="os/os_user_guide/">OS User Guide</a></li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
    
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.0.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h1 id="task">Task</h1>
<p>A task, along with the scheduler, forms the basis of the Mynewt OS. A task 
consists of two basic elements: a task stack and a task function. The task 
function is basically a forever loop, waiting for some "event" to wake it up. 
There are two methods used to signal a task that it has work to do: <a href="../../event_queue/event_queue/">event queues</a> 
and <a href="../../semaphore/semaphore/">semaphores</a> .</p>
<p>The Mynewt OS is a multi-tasking, preemptive OS. Every task is assigned a task 
priority (from 0 to 255), with 0 being the highest priority task. If a higher 
priority task than the current task wants to run, the scheduler preempts the 
currently running task and switches context to the higher priority task. This is 
just a fancy way of saying that the processor stack pointer now points to the 
stack of the higher priority task and the task resumes execution where it left 
off.</p>
<p>Tasks run to completion unless they are preempted by a higher priority task. The 
developer must ensure that tasks eventually "sleep"; otherwise lower priority 
tasks will never get a chance to run (actually, any task lower in priority than 
the task that never sleeps). A task will be put to sleep in the following cases: 
it puts itself to sleep using <code>os_time_delay()</code>, it waits on an <a href="../../event_queue/event_queue/">event queue</a><br />
which is empty or attempts to obtain a mutex or a <a href="../../semaphore/semaphore/">semaphore</a>  that is currently 
owned by another task.</p>
<p>Note that other sections of the manual describe these OS features in more 
detail.</p>
<h2 id="description">Description</h2>
<p>In order to create a task two data structures need to be defined: the task 
object (<code>struct os_task</code>) and its associated stack. Determining the stack size can 
be a bit tricky; generally developers should not declare large local variables 
on the stack so that task stacks can be of limited size. However, all 
applications are different and the developer must choose the stack size 
accordingly. NOTE: be careful when declaring your stack! The stack is in units 
of <code>os_stack_t</code> sized elements (generally 32-bits). Looking at the example given 
below and assuming <code>os_stack_t</code> is defined to be a 32-bit unsigned value, 
"my_task_stack" will use 256 bytes. </p>
<p>A task must also have an associated "task function". This is the function that 
will be called when the task is first run. This task function should never 
return!</p>
<p>In order to inform the Mynewt OS of the new task and to have it added to the 
scheduler, the <code>os_task_init()</code> function is called. Once <code>os_task_init()</code> is 
called, the task is made ready to run and is added to the active task list. Note 
that a task can be initialized (started) before or after the os has started 
(i.e. before <code>os_start()</code> is called) but must be initialized after the os has 
been initialized (i.e. 'os_init()' has been called). In most of the examples and 
current Mynewt projects, the os is initialized, tasks are initialized, and the 
the os is started. Once the os has started, the highest priority task will be 
the first task set to run.</p>
<p>Information about a task can be obtained using the <code>os_task_info_get_next()</code> 
API. Developers can walk the list of tasks to obtain information on all created 
tasks. This information is of type <code>os_task_info</code> and is described below.</p>
<p>The following is a very simple example showing a single application task. This 
task simply toggles an LED at a one second interval.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/* Create a simple &quot;project&quot; with a task that blinks a LED every second */</span>

<span style="color: #177500">/* Define task stack and task object */</span>
<span style="color: #633820">#define MY_TASK_PRI         (OS_TASK_PRI_HIGHEST) </span>
<span style="color: #633820">#define MY_STACK_SIZE       (64) </span>
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_task</span> <span style="color: #000000">my_task</span>; 
<span style="color: #000000">os_stack_t</span> <span style="color: #000000">my_task_stack</span>[<span style="color: #000000">MY_STACK_SIZE</span>]; 

<span style="color: #177500">/* This is the task function */</span>
<span style="color: #A90D91">void</span> <span style="color: #000000">my_task_func</span>(<span style="color: #A90D91">void</span> <span style="color: #000000">*arg</span>) {
    <span style="color: #177500">/* Set the led pin as an output */</span>
    <span style="color: #000000">hal_gpio_init_out</span>(<span style="color: #000000">LED_BLINK_PIN</span>, <span style="color: #1C01CE">1</span>);

    <span style="color: #177500">/* The task is a forever loop that does not return */</span>
    <span style="color: #A90D91">while</span> (<span style="color: #1C01CE">1</span>) {
        <span style="color: #177500">/* Wait one second */</span> 
        <span style="color: #000000">os_time_delay</span>(<span style="color: #1C01CE">1000</span>);

        <span style="color: #177500">/* Toggle the LED */</span> 
        <span style="color: #000000">hal_gpio_toggle</span>(<span style="color: #000000">LED_BLINK_PIN</span>);
    }
}

<span style="color: #177500">/* This is the main function for the project */</span>
<span style="color: #A90D91">int</span> <span style="color: #000000">main</span>(<span style="color: #A90D91">int</span> <span style="color: #000000">argc</span>, <span style="color: #A90D91">char</span> <span style="color: #000000">**argv</span>) 
{

    <span style="color: #177500">/* Perform system and package initialization */</span>
    <span style="color: #000000">sysinit</span>();

    <span style="color: #177500">/* Initialize the task */</span>
    <span style="color: #000000">os_task_init</span>(<span style="color: #000000">&amp;my_task</span>, <span style="color: #C41A16">&quot;my_task&quot;</span>, <span style="color: #000000">my_task_func</span>, <span style="color: #A90D91">NULL</span>, <span style="color: #000000">MY_TASK_PRIO</span>, 
                 <span style="color: #000000">OS_WAIT_FOREVER</span>, <span style="color: #000000">my_task_stack</span>, <span style="color: #000000">MY_STACK_SIZE</span>);

    <span style="color: #177500">/*  Process events from the default event queue.  */</span>
    <span style="color: #A90D91">while</span> (<span style="color: #1C01CE">1</span>) {
       <span style="color: #000000">os_eventq_run</span>(<span style="color: #000000">os_eventq_dflt_get</span>());
    }
    <span style="color: #177500">/* main never returns */</span>  
}
</code></pre></div>

<h2 id="data-structures">Data structures</h2>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/* The highest and lowest task priorities */</span>
<span style="color: #633820">#define OS_TASK_PRI_HIGHEST         (0)</span>
<span style="color: #633820">#define OS_TASK_PRI_LOWEST          (0xff)</span>

<span style="color: #177500">/* Task states */</span>
<span style="color: #A90D91">typedef</span> <span style="color: #A90D91">enum</span> <span style="color: #000000">os_task_state</span> {
    <span style="color: #000000">OS_TASK_READY</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>, 
    <span style="color: #000000">OS_TASK_SLEEP</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">2</span>
} <span style="color: #000000">os_task_state_t</span>;

<span style="color: #177500">/* Task flags */</span>
<span style="color: #633820">#define OS_TASK_FLAG_NO_TIMEOUT     (0x0001U)</span>
<span style="color: #633820">#define OS_TASK_FLAG_SEM_WAIT       (0x0002U)</span>
<span style="color: #633820">#define OS_TASK_FLAG_MUTEX_WAIT     (0x0004U)</span>

<span style="color: #A90D91">typedef</span> <span style="color: #A90D91">void</span> (<span style="color: #000000">*os_task_func_t</span>)(<span style="color: #A90D91">void</span> <span style="color: #000000">*</span>);

<span style="color: #633820">#define OS_TASK_MAX_NAME_LEN (32)</span>
</code></pre></div>

<p><br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_task</span> {
    <span style="color: #000000">os_stack_t</span> <span style="color: #000000">*t_stackptr</span>;
    <span style="color: #000000">os_stack_t</span> <span style="color: #000000">*t_stacktop</span>;

    <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">t_stacksize</span>;
    <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">t_flags</span>;

    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">t_taskid</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">t_prio</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">t_state</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">t_pad</span>;

    <span style="color: #A90D91">char</span> <span style="color: #000000">*t_name</span>;
    <span style="color: #000000">os_task_func_t</span> <span style="color: #000000">t_func</span>;
    <span style="color: #A90D91">void</span> <span style="color: #000000">*t_arg</span>;

    <span style="color: #A90D91">void</span> <span style="color: #000000">*t_obj</span>;

    <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_sanity_check</span> <span style="color: #000000">t_sanity_check</span>; 

    <span style="color: #000000">os_time_t</span> <span style="color: #000000">t_next_wakeup</span>;
    <span style="color: #000000">os_time_t</span> <span style="color: #000000">t_run_time</span>;
    <span style="color: #A90D91">uint32_t</span> <span style="color: #000000">t_ctx_sw_cnt</span>;

    <span style="color: #177500">/* Global list of all tasks, irrespective of run or sleep lists */</span>
    <span style="color: #000000">STAILQ_ENTRY</span>(<span style="color: #000000">os_task</span>) <span style="color: #000000">t_os_task_list</span>;

    <span style="color: #177500">/* Used to chain task to either the run or sleep list */</span> 
    <span style="color: #000000">TAILQ_ENTRY</span>(<span style="color: #000000">os_task</span>) <span style="color: #000000">t_os_list</span>;

    <span style="color: #177500">/* Used to chain task to an object such as a semaphore or mutex */</span>
    <span style="color: #000000">SLIST_ENTRY</span>(<span style="color: #000000">os_task</span>) <span style="color: #000000">t_obj_list</span>;
};
</code></pre></div>

<table>
<thead>
<tr>
<th><strong>Element</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>t_stackptr</td>
<td>Current stack pointer</td>
</tr>
<tr>
<td>t_stacktop</td>
<td>The address of the top of the task stack. The stack grows downward</td>
</tr>
<tr>
<td>t_stacksize</td>
<td>The size of the stack, in units of os_stack_t (not bytes!)</td>
</tr>
<tr>
<td>t_flags</td>
<td>Task flags (see flag definitions)</td>
</tr>
<tr>
<td>t_taskid</td>
<td>A numeric id assigned to each task</td>
</tr>
<tr>
<td>t_prio</td>
<td>The priority of the task. The lower the number, the higher the priority</td>
</tr>
<tr>
<td>t_state</td>
<td>The task state (see state definitions)</td>
</tr>
<tr>
<td>t_pad</td>
<td>padding (for alignment)</td>
</tr>
<tr>
<td>t_name</td>
<td>Name of task</td>
</tr>
<tr>
<td>t_func</td>
<td>Pointer to task function</td>
</tr>
<tr>
<td>t_obj</td>
<td>Generic object used by mutexes and semaphores when the task is waiting on a mutex or semaphore</td>
</tr>
<tr>
<td>t_sanity_check</td>
<td>Sanity task data structure</td>
</tr>
<tr>
<td>t_next_wakeup</td>
<td>OS time when task is next scheduled to wake up</td>
</tr>
<tr>
<td>t_run_time</td>
<td>The amount of os time ticks this task has been running</td>
</tr>
<tr>
<td>t_ctx_sw_cnt</td>
<td>The number of times that this task has been run</td>
</tr>
<tr>
<td>t_os_task_list</td>
<td>List pointer for global task list. All tasks are placed on this list</td>
</tr>
<tr>
<td>t_os_list</td>
<td>List pointer used by either the active task list or the sleeping task list</td>
</tr>
<tr>
<td>t_obj_list</td>
<td>List pointer for tasks waiting on a semaphore or mutex</td>
</tr>
</tbody>
</table>
<p><br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_task_info</span> {
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">oti_prio</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">oti_taskid</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">oti_state</span>;
    <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">oti_flags</span>;
    <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">oti_stkusage</span>;
    <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">oti_stksize</span>;
    <span style="color: #A90D91">uint32_t</span> <span style="color: #000000">oti_cswcnt</span>;
    <span style="color: #A90D91">uint32_t</span> <span style="color: #000000">oti_runtime</span>;
    <span style="color: #000000">os_time_t</span> <span style="color: #000000">oti_last_checkin</span>;
    <span style="color: #000000">os_time_t</span> <span style="color: #000000">oti_next_checkin</span>;

    <span style="color: #A90D91">char</span> <span style="color: #000000">oti_name</span>[<span style="color: #000000">OS_TASK_MAX_NAME_LEN</span>];
};
</code></pre></div>

<table>
<thead>
<tr>
<th><strong>Element</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>oti_prio</td>
<td>Task priority</td>
</tr>
<tr>
<td>oti_taskid</td>
<td>Task id</td>
</tr>
<tr>
<td>oti_state</td>
<td>Task state</td>
</tr>
<tr>
<td>oti_flags</td>
<td>Task flags</td>
</tr>
<tr>
<td>oti_stkusage</td>
<td>Amount of stack used by the task (in os_stack_t units)</td>
</tr>
<tr>
<td>oti_stksize</td>
<td>The size of the stack (in os_stack_t units)</td>
</tr>
<tr>
<td>oti_cswcnt</td>
<td>The context switch count</td>
</tr>
<tr>
<td>oti_runtime</td>
<td>The amount of time that the task has run (in os time ticks)</td>
</tr>
<tr>
<td>oti_last_checkin</td>
<td>The time (os time) at which this task last checked in to the sanity task</td>
</tr>
<tr>
<td>oti_next_checkin</td>
<td>The time (os time) at which this task last checked in to the sanity task</td>
</tr>
<tr>
<td>oti_name</td>
<td>Name of the task</td>
</tr>
</tbody>
</table>
<p><br></p>
<h2 id="list-of-functions">List of Functions</h2>
<p>The functions available in task are:</p>
<table>
<thead>
<tr>
<th><strong>Function</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="../os_task_init/">os_task_init</a></td>
<td>Called to create a task. This adds the task object to the list of ready to run tasks.</td>
</tr>
<tr>
<td><a href="../os_task_count/">os_task_count</a></td>
<td>Returns the number of tasks that have been created.</td>
</tr>
<tr>
<td><a href="../os_task_info_get_next/">os_task_info_get_next</a></td>
<td>Populates the os task info structure given with task information.</td>
</tr>
<tr>
<td><a href="../os_task_remove/">os_task_remove</a></td>
<td>Removes a task from the task list.</td>
</tr>
</tbody>
</table>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt (incubating) is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../../js/highlight.pack.js"></script>
        <script src="../../../../js/base.js"></script>
        <script src="../../../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>