<!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" selected="selected" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    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/sensor_framework/sensor_framework_overview/">Sensor Framework</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>
        
      
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/core_os/task/task.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.1.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: event queues 
and semaphores (see the appropriate manual sections for descriptions of these 
features).</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 insure 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 event queue 
which is empty or attempts to obtain a mutex or a semaphore 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 (struct os_task) 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 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>