<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.1" xml:lang="en-US">
  <compounddef id="taskswitch_8h" kind="file" language="C++">
    <compoundname>taskswitch.h</compoundname>
    <includedby refid="kernel_8h" local="yes">kernel.h</includedby>
    <invincdepgraph>
      <node id="28">
        <label>ramdisk.h</label>
        <link refid="ramdisk_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="3">
        <label>acpi.h</label>
        <link refid="acpi_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="5">
        <label>arp.h</label>
        <link refid="arp_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="10">
        <label>dns.h</label>
        <link refid="dns_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="14">
        <label>fat32.h</label>
        <link refid="fat32_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="32">
        <label>udp.h</label>
        <link refid="udp_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="31">
        <label>tcp.h</label>
        <link refid="tcp_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="8">
        <label>devicename.h</label>
        <link refid="devicename_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="18">
        <label>idt.h</label>
        <link refid="idt_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="11">
        <label>drawing.h</label>
        <link refid="drawing_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="6">
        <label>basic_tokenizer.h</label>
        <link refid="basic__tokenizer_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="30">
        <label>rtl8139.h</label>
        <link refid="rtl8139_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="27">
        <label>printf.h</label>
        <link refid="printf_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="12">
        <label>e1000.h</label>
        <link refid="e1000_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="19">
        <label>initialisation-functions.h</label>
        <link refid="initialisation-functions_8h"/>
      </node>
      <node id="15">
        <label>fpu.h</label>
        <link refid="fpu_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="17">
        <label>icmp.h</label>
        <link refid="icmp_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="21">
        <label>ip.h</label>
        <link refid="ip_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="22">
        <label>maths.h</label>
        <link refid="maths_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="13">
        <label>ethernet.h</label>
        <link refid="ethernet_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="2">
        <label>kernel.h</label>
        <link refid="kernel_8h"/>
        <childnode refid="3" relation="include">
        </childnode>
        <childnode refid="4" relation="include">
        </childnode>
        <childnode refid="5" relation="include">
        </childnode>
        <childnode refid="6" relation="include">
        </childnode>
        <childnode refid="7" relation="include">
        </childnode>
        <childnode refid="8" relation="include">
        </childnode>
        <childnode refid="9" relation="include">
        </childnode>
        <childnode refid="10" relation="include">
        </childnode>
        <childnode refid="11" relation="include">
        </childnode>
        <childnode refid="12" relation="include">
        </childnode>
        <childnode refid="13" relation="include">
        </childnode>
        <childnode refid="14" relation="include">
        </childnode>
        <childnode refid="15" relation="include">
        </childnode>
        <childnode refid="16" relation="include">
        </childnode>
        <childnode refid="17" relation="include">
        </childnode>
        <childnode refid="18" relation="include">
        </childnode>
        <childnode refid="19" relation="include">
        </childnode>
        <childnode refid="20" relation="include">
        </childnode>
        <childnode refid="21" relation="include">
        </childnode>
        <childnode refid="22" relation="include">
        </childnode>
        <childnode refid="23" relation="include">
        </childnode>
        <childnode refid="24" relation="include">
        </childnode>
        <childnode refid="25" relation="include">
        </childnode>
        <childnode refid="26" relation="include">
        </childnode>
        <childnode refid="27" relation="include">
        </childnode>
        <childnode refid="28" relation="include">
        </childnode>
        <childnode refid="29" relation="include">
        </childnode>
        <childnode refid="30" relation="include">
        </childnode>
        <childnode refid="31" relation="include">
        </childnode>
        <childnode refid="32" relation="include">
        </childnode>
      </node>
      <node id="23">
        <label>memcpy.h</label>
        <link refid="memcpy_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="25">
        <label>partition.h</label>
        <link refid="partition_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="29">
        <label>random.h</label>
        <link refid="random_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="1">
        <label>taskswitch.h</label>
        <link refid="taskswitch_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="16">
        <label>hashmap.h</label>
        <link refid="hashmap_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="24">
        <label>net.h</label>
        <link refid="net_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="20">
        <label>interrupt.h</label>
        <link refid="interrupt_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="26">
        <label>pci.h</label>
        <link refid="pci_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="4">
        <label>ahci.h</label>
        <link refid="ahci_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="9">
        <label>dhcp.h</label>
        <link refid="dhcp_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
      <node id="7">
        <label>clock.h</label>
        <link refid="clock_8h"/>
        <childnode refid="2" relation="include">
        </childnode>
      </node>
    </invincdepgraph>
    <innerclass refid="structprocess__t" prot="public">process_t</innerclass>
    <innerclass refid="structproc__id__t" prot="public">proc_id_t</innerclass>
    <innerclass refid="structidle__timer__t" prot="public">idle_timer_t</innerclass>
      <sectiondef kind="enum">
      <memberdef kind="enum" id="taskswitch_8h_1ab97efa0d1c4aeaf55ff756bf16685854" prot="public" static="no" strong="no">
        <type></type>
        <name>process_state_t</name>
        <enumvalue id="taskswitch_8h_1ab97efa0d1c4aeaf55ff756bf16685854a4f8e3722918567a5d152312e9afab857" prot="public">
          <name>PROC_RUNNING</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <enumvalue id="taskswitch_8h_1ab97efa0d1c4aeaf55ff756bf16685854a6b461cf08706e8456cfd0c5e46c88f5c" prot="public">
          <name>PROC_IDLE</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <enumvalue id="taskswitch_8h_1ab97efa0d1c4aeaf55ff756bf16685854a36e1fd61daba444bb9738105db8d59b9" prot="public">
          <name>PROC_DELET</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <briefdescription>
<para>Represents the current state of a process. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="12" column="1" bodyfile="include/taskswitch.h" bodystart="12" bodyend="16"/>
      </memberdef>
      <memberdef kind="enum" id="taskswitch_8h_1ab6c8a1a3016b13baf9af7476cceac7d4" prot="public" static="no" strong="no">
        <type></type>
        <name>idle_type_t</name>
        <enumvalue id="taskswitch_8h_1ab6c8a1a3016b13baf9af7476cceac7d4a170f38abe527a71ef15f1d6fd1ba9677" prot="public">
          <name>IDLE_FOREGROUND</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <enumvalue id="taskswitch_8h_1ab6c8a1a3016b13baf9af7476cceac7d4a875e3a3a86598eb910bc4405a16e8a99" prot="public">
          <name>IDLE_BACKGROUND</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <briefdescription>
<para>Types of idle task. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="55" column="1" bodyfile="include/taskswitch.h" bodystart="55" bodyend="58"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="typedef">
      <memberdef kind="typedef" id="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" prot="public" static="no">
        <type>uint32_t</type>
        <definition>typedef uint32_t pid_t</definition>
        <argsstring></argsstring>
        <name>pid_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="18" column="18" bodyfile="include/taskswitch.h" bodystart="18" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="taskswitch_8h_1af2306308627701b66dc6f3babe821ab4" prot="public" static="no">
        <type>uint32_t</type>
        <definition>typedef uint32_t uid_t</definition>
        <argsstring></argsstring>
        <name>uid_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="19" column="18" bodyfile="include/taskswitch.h" bodystart="19" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="taskswitch_8h_1aa7352f1065fe606194d792e2b292cf83" prot="public" static="no">
        <type>uint32_t</type>
        <definition>typedef uint32_t gid_t</definition>
        <argsstring></argsstring>
        <name>gid_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="20" column="18" bodyfile="include/taskswitch.h" bodystart="20" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="taskswitch_8h_1a66e2436dbfe8b3600c090f28627b621f" prot="public" static="no">
        <type>uint8_t</type>
        <definition>typedef uint8_t cpu_id_t</definition>
        <argsstring></argsstring>
        <name>cpu_id_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="21" column="17" bodyfile="include/taskswitch.h" bodystart="21" bodyend="-1"/>
      </memberdef>
      <memberdef kind="typedef" id="taskswitch_8h_1a82c77e5c902b86503a57e02bb4314bad" prot="public" static="no">
        <type>void(*</type>
        <definition>typedef void(* proc_idle_timer_t) (void)</definition>
        <argsstring>)(void)</argsstring>
        <name>proc_idle_timer_t</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="61" column="9" bodyfile="include/taskswitch.h" bodystart="61" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="taskswitch_8h_1aa489f46acde8e80831f0432a1da6e695" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
        <definition>process_t* proc_load</definition>
        <argsstring>(const char *fullpath, struct console *cons, pid_t parent_pid, const char *csd)</argsstring>
        <name>proc_load</name>
        <param>
          <type>const char *</type>
          <declname>fullpath</declname>
        </param>
        <param>
          <type>struct <ref refid="structconsole" kindref="compound">console</ref> *</type>
          <declname>cons</declname>
        </param>
        <param>
          <type><ref refid="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" kindref="member">pid_t</ref></type>
          <declname>parent_pid</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>csd</declname>
        </param>
        <briefdescription>
<para>Load a new BASIC process. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>fullpath</parametername>
</parameternamelist>
<parameterdescription>
<para>fully qualified path to file </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>cons</parametername>
</parameternamelist>
<parameterdescription>
<para>console </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>parent_pid</parametername>
</parameternamelist>
<parameterdescription>
<para>parent PID, or 0 </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>csd</parametername>
</parameternamelist>
<parameterdescription>
<para>Currently selected directory </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>process_t* new process details </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="80" column="11" declfile="include/taskswitch.h" declline="80" declcolumn="11"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1ab5a40192ac7fb47cf38c7e803ccd0efb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
        <definition>process_t* proc_find</definition>
        <argsstring>(pid_t pid)</argsstring>
        <name>proc_find</name>
        <param>
          <type><ref refid="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" kindref="member">pid_t</ref></type>
          <declname>pid</declname>
        </param>
        <briefdescription>
<para>Find a process by ID. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>pid</parametername>
</parameternamelist>
<parameterdescription>
<para>process ID </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>process_t* process detail or NULL if not found </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="88" column="11" declfile="include/taskswitch.h" declline="88" declcolumn="11"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a6d871c77c8a1a04420b1b09715d0b177" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
        <definition>process_t* proc_cur</definition>
        <argsstring>()</argsstring>
        <name>proc_cur</name>
        <briefdescription>
<para>Return detail of current process. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="return"><para>process_t* process detail or NULL if no current process </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="95" column="11" declfile="include/taskswitch.h" declline="95" declcolumn="11"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a8b2b24e480bc2b9188e720c028795cee" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_wait</definition>
        <argsstring>(process_t *proc, pid_t otherpid)</argsstring>
        <name>proc_wait</name>
        <param>
          <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
          <declname>proc</declname>
        </param>
        <param>
          <type><ref refid="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" kindref="member">pid_t</ref></type>
          <declname>otherpid</declname>
        </param>
        <briefdescription>
<para>Mark a process as waiting for another process to complete. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>proc</parametername>
</parameternamelist>
<parameterdescription>
<para>process to mark as waiting </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>otherpid</parametername>
</parameternamelist>
<parameterdescription>
<para>other process ID to wait on, must exist. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="103" column="6" declfile="include/taskswitch.h" declline="103" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1abb94173794194e3382dc5482b7e0aa62" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_run</definition>
        <argsstring>(process_t *proc)</argsstring>
        <name>proc_run</name>
        <param>
          <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
          <declname>proc</declname>
        </param>
        <briefdescription>
<para>Run BASIC program for one atomic cycle. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>proc</parametername>
</parameternamelist>
<parameterdescription>
<para>process to execute </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="110" column="6" declfile="include/taskswitch.h" declline="110" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a7844baa5edadb538de03bc3494e947cc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int</type>
        <definition>int proc_ended</definition>
        <argsstring>(process_t *proc)</argsstring>
        <name>proc_ended</name>
        <param>
          <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
          <declname>proc</declname>
        </param>
        <briefdescription>
<para>Returns true if the program has ended. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>proc</parametername>
</parameternamelist>
<parameterdescription>
<para>process </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>int true if ended </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="118" column="5" declfile="include/taskswitch.h" declline="118" declcolumn="5"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a8951b9dab6452cf831a751d0cda64a5d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_kill</definition>
        <argsstring>(process_t *proc)</argsstring>
        <name>proc_kill</name>
        <param>
          <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
          <declname>proc</declname>
        </param>
        <briefdescription>
<para>Kill a process. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>proc</parametername>
</parameternamelist>
<parameterdescription>
<para>process to kill </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="125" column="6" declfile="include/taskswitch.h" declline="125" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a7b25ff76590322d996a0cb108665cedc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>bool</type>
        <definition>bool proc_kill_id</definition>
        <argsstring>(pid_t id)</argsstring>
        <name>proc_kill_id</name>
        <param>
          <type><ref refid="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" kindref="member">pid_t</ref></type>
          <declname>id</declname>
        </param>
        <briefdescription>
<para>Kill a process by ID. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="note"><para>Cannot be used to kill the current process from itself! </para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>id</parametername>
</parameternamelist>
<parameterdescription>
<para>Process ID to kill </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>true if found and killed </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="134" column="6" declfile="include/taskswitch.h" declline="134" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1aae5fc9e36c6eef167c4207ed63cf17be" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_show_list</definition>
        <argsstring>()</argsstring>
        <name>proc_show_list</name>
        <briefdescription>
<para>Display a diagnostic list of all processes. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="139" column="6" declfile="include/taskswitch.h" declline="139" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1af57a1ba1649626d231502d6c23bbac49" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_loop</definition>
        <argsstring>()</argsstring>
        <name>proc_loop</name>
        <briefdescription>
<para>Run the process scheduling loop. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="note"><para>Does not return </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="145" column="6" declfile="include/taskswitch.h" declline="145" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a1ec64ff3e1bbf088a6611d7304cf72e2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_timer</definition>
        <argsstring>()</argsstring>
        <name>proc_timer</name>
        <briefdescription>
<para>Change to next scheduled process. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="note"><para>Uses the round robin scheduling algorithm </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="151" column="6" declfile="include/taskswitch.h" declline="151" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a01a99ff8bacb9f2f0509b21f45fc7217" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>int64_t</type>
        <definition>int64_t proc_total</definition>
        <argsstring>()</argsstring>
        <name>proc_total</name>
        <briefdescription>
<para>Returns the total number of running processes. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="return"><para>int64_t number of running processes </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="158" column="9" declfile="include/taskswitch.h" declline="158" declcolumn="9"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1a98ea5946e6a5a7a69b87f081ddf0b1e4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="taskswitch_8h_1a7a26cb7f5678736cec66712d6df1d4ed" kindref="member">pid_t</ref></type>
        <definition>pid_t proc_id</definition>
        <argsstring>(int64_t index)</argsstring>
        <name>proc_id</name>
        <param>
          <type>int64_t</type>
          <declname>index</declname>
        </param>
        <briefdescription>
<para>Returns the id of a process by index number. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>index</parametername>
</parameternamelist>
<parameterdescription>
<para>index number of process to find between 0 and <ref refid="taskswitch_8h_1a01a99ff8bacb9f2f0509b21f45fc7217" kindref="member">proc_total()</ref> </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>pid_t process id </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="166" column="7" declfile="include/taskswitch.h" declline="166" declcolumn="7"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1ad2dd4ffab2aaabd37998ec3b3216af48" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void proc_register_idle</definition>
        <argsstring>(proc_idle_timer_t handler, idle_type_t type)</argsstring>
        <name>proc_register_idle</name>
        <param>
          <type><ref refid="taskswitch_8h_1a82c77e5c902b86503a57e02bb4314bad" kindref="member">proc_idle_timer_t</ref></type>
          <declname>handler</declname>
        </param>
        <param>
          <type><ref refid="taskswitch_8h_1ab6c8a1a3016b13baf9af7476cceac7d4" kindref="member">idle_type_t</ref></type>
          <declname>type</declname>
        </param>
        <briefdescription>
<para>Register a function to be called periodically during idle time. </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>handler</parametername>
</parameternamelist>
<parameterdescription>
<para>handler function, void(void) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>type</parametername>
</parameternamelist>
<parameterdescription>
<para>type of idle to register </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="174" column="6" declfile="include/taskswitch.h" declline="174" declcolumn="6"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1aa0340f929d97ebceb2e0d7eaa9d4d3ff" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>const char *</type>
        <definition>const char* proc_set_csd</definition>
        <argsstring>(process_t *proc, const char *csd)</argsstring>
        <name>proc_set_csd</name>
        <param>
          <type><ref refid="structprocess__t" kindref="compound">process_t</ref> *</type>
          <declname>proc</declname>
        </param>
        <param>
          <type>const char *</type>
          <declname>csd</declname>
        </param>
        <briefdescription>
<para>Change CSD (currently selected directory) of process. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="note"><para>No validation of the path is peformed, this must be done extnerally to this function by validating the file information on VFS. </para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>proc</parametername>
</parameternamelist>
<parameterdescription>
<para>Process struct </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>csd</parametername>
</parameternamelist>
<parameterdescription>
<para>current directory </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>const char* new current directory </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="185" column="12" declfile="include/taskswitch.h" declline="185" declcolumn="12"/>
      </memberdef>
      <memberdef kind="function" id="taskswitch_8h_1ab25d44702b6e10e723714c368c4a7520" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void init_process</definition>
        <argsstring>()</argsstring>
        <name>init_process</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/taskswitch.h" line="187" column="6" declfile="include/taskswitch.h" declline="187" declcolumn="6"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Handles processes and multitasking. </para>
    </briefdescription>
    <detaileddescription>
<para><simplesect kind="author"><para>Craig Edwards (<ulink url="mailto:craigedwards@brainbox.cc">craigedwards@brainbox.cc</ulink>) </para>
</simplesect>
<simplesect kind="copyright"><para>Copyright (c) 2012-2023 </para>
</simplesect>
</para>
    </detaileddescription>
    <location file="include/taskswitch.h"/>
  </compounddef>
</doxygen>
