[][src]Module mynewt::kernel::os

Contains Rust bindings for Mynewt OS API kernel/os

Re-exports

pub use self::os_error as os_error_t;
pub use self::os_task_state as os_task_state_t;

Structs

__IncompleteArrayField
hal_timer

The HAL timer structure. The user can declare as many of these structures as desired. They are enqueued on a particular HW timer queue when the user calls the :c:func:hal_timer_start() or :c:func:hal_timer_start_at() API. The user must have called :c:func:hal_timer_set_cb() before starting a timer.

hal_timer__bindgen_ty_1
os_callout

Structure containing the definition of a callout, initialized by os_callout_init() and passed to callout functions.

os_callout__bindgen_ty_1
os_callout_list

@cond INTERNAL_HIDDEN

os_dev
os_dev__bindgen_ty_1
os_dev_handlers

Device handlers, implementers of device drivers should fill these out to control device operation.

os_event

Structure representing an OS event. OS events get placed onto the event queues and are consumed by tasks.

os_event__bindgen_ty_1
os_eventq
os_eventq__bindgen_ty_1
os_mbuf

Chained memory buffer.

os_mbuf__bindgen_ty_1
os_mbuf_pkthdr

A packet header structure that preceeds the mbuf packet headers.

os_mbuf_pkthdr__bindgen_ty_1
os_mbuf_pool

A mbuf pool from which to allocate mbufs. This contains a pointer to the os mempool to allocate mbufs out of, the total number of elements in the pool, and the amount of "user" data in a non-packet header mbuf. The total pool size, in bytes, should be: os_mbuf_count * (omp_databuf_len + sizeof(struct os_mbuf))

os_mbuf_pool__bindgen_ty_1
os_memblock

A memory block structure. This simply contains a pointer to the free list chain and is only used when the block is on the free list. When the block has been removed from the free list the entire memory block is usable by the caller.

os_memblock__bindgen_ty_1
os_mempool

Memory pool

os_mempool__bindgen_ty_1
os_mempool__bindgen_ty_2
os_mempool_ext
os_mempool_info

Information describing a memory pool, used to return OS information to the management layer.

os_mqueue

Structure representing a queue of mbufs.

os_mqueue__bindgen_ty_1
os_mutex

OS mutex structure

os_mutex__bindgen_ty_1
os_sanity_check
os_sanity_check__bindgen_ty_1
os_sem

Structure representing an OS semaphore.

os_sem__bindgen_ty_1
os_stack
os_task

@cond INTERNAL_HIDDEN

os_task__bindgen_ty_1
os_task__bindgen_ty_2
os_task__bindgen_ty_3
os_task_info

Information about an individual task, returned for management APIs.

os_task_list
os_task_obj
os_task_obj__bindgen_ty_1
os_task_stailq

@cond INTERNAL_HIDDEN

os_time_change_info

Represents a time change. Passed to time change listeners when the current time-of-day is set.

os_time_change_listener

Time change listener. Notified when the time-of-day is set.

os_time_change_listener__bindgen_ty_1

Internal.

os_timeval

Structure representing time since Jan 1 1970 with microsecond granularity

os_timezone

Structure representing a timezone offset

Constants

OS_ALIGNMENT
OS_DEV_F_INIT_CRITICAL
OS_DEV_F_STATUS_OPEN
OS_DEV_F_STATUS_READY
OS_DEV_F_STATUS_SUSPENDED
OS_DEV_INIT_F_CRITICAL
OS_DEV_INIT_KERNEL
OS_DEV_INIT_PRIMARY
OS_DEV_INIT_PRIO_DEFAULT
OS_DEV_INIT_SECONDARY
OS_IDLE_PRIO
OS_IDLE_STACK_SIZE
OS_MEMPOOL_F_EXT
OS_MEMPOOL_INFO_NAME_LEN
OS_RUN_PRIV
OS_RUN_UNPRIV
OS_SANITY_STACK_SIZE
OS_STACK_ALIGNMENT
OS_STACK_PATTERN
OS_STIME_MAX
OS_TASK_FLAG_EVQ_WAIT
OS_TASK_FLAG_MUTEX_WAIT
OS_TASK_FLAG_NO_TIMEOUT
OS_TASK_FLAG_SEM_WAIT
OS_TASK_MAX_NAME_LEN
OS_TASK_PRI_HIGHEST
OS_TASK_PRI_LOWEST
OS_TICKS_PER_SEC
OS_TIMEOUT_NEVER
OS_TIME_MAX
OS_TRACE_ID_CALLOUT_INIT
OS_TRACE_ID_CALLOUT_RESET
OS_TRACE_ID_CALLOUT_STOP
OS_TRACE_ID_CALLOUT_TICK
OS_TRACE_ID_EVENTQ_GET
OS_TRACE_ID_EVENTQ_GET_NO_WAIT
OS_TRACE_ID_EVENTQ_POLL
OS_TRACE_ID_EVENTQ_POLL_0TIMO
OS_TRACE_ID_EVENTQ_PUT
OS_TRACE_ID_EVENTQ_REMOVE
OS_TRACE_ID_MBUF_FREE
OS_TRACE_ID_MBUF_FREE_CHAIN
OS_TRACE_ID_MBUF_GET
OS_TRACE_ID_MBUF_GET_PKTHDR
OS_TRACE_ID_MEMBLOCK_GET
OS_TRACE_ID_MEMBLOCK_PUT
OS_TRACE_ID_MEMBLOCK_PUT_FROM_CB
OS_TRACE_ID_MUTEX_INIT
OS_TRACE_ID_MUTEX_PEND
OS_TRACE_ID_MUTEX_RELEASE
OS_TRACE_ID_SEM_INIT
OS_TRACE_ID_SEM_PEND
OS_TRACE_ID_SEM_RELEASE
OS_WAIT_FOREVER
SYS_EACCES
SYS_EAGAIN
SYS_EALREADY
SYS_EBUSY
SYS_EDONE
SYS_EINVAL
SYS_EIO
SYS_ENODEV
SYS_ENOENT
SYS_ENOMEM
SYS_ENOTSUP
SYS_EOK
SYS_EPERUSER
SYS_ERANGE
SYS_EREMOTEIO
SYS_ETIMEOUT
SYS_EUNKNOWN
os_error_OS_BAD_MUTEX
os_error_OS_EBUSY
os_error_OS_EINVAL
os_error_OS_ENOENT
os_error_OS_ENOMEM
os_error_OS_ERROR
os_error_OS_ERR_IN_ISR
os_error_OS_ERR_PRIV
os_error_OS_INVALID_PARM
os_error_OS_MEM_NOT_ALIGNED
os_error_OS_NOT_STARTED
os_error_OS_OK
os_error_OS_TIMEOUT
os_task_state_OS_TASK_READY

Task is ready to run

os_task_state_OS_TASK_SLEEP

Task is sleeping

Statics

os_main_stack
os_main_task

Functions

eventq_dflt_get

Retrieves the default event queue processed by OS main task.

eventq_run

Pull a single item off the event queue and call it's event callback.

os_arch_ctx_sw
os_arch_in_critical
os_arch_init
os_arch_init_task_stack
os_arch_os_init
os_arch_os_start
os_arch_restore_sr
os_arch_save_sr
os_arch_start
os_arch_task_stack_init
os_callout_init

Initialize a callout.

os_callout_remaining_ticks

Returns the number of ticks which remains to callout.

os_callout_reset

Reset the callout to fire off in 'ticks' ticks.

os_callout_stop

Stop the callout from firing off, any pending events will be cleared.

os_callout_tick

@cond INTERNAL_HIDDEN

os_callout_wakeup_ticks
os_cputime_delay_nsecs

Wait until 'nsecs' nanoseconds has elapsed. This is a blocking delay. Not defined if OS_CPUTIME_FREQ_PWR2 is defined.

os_cputime_delay_ticks

Wait until the number of ticks has elapsed. This is a blocking delay.

os_cputime_delay_usecs

Wait until 'usecs' microseconds has elapsed. This is a blocking delay.

os_cputime_get32

Returns the low 32 bits of cputime.

os_cputime_init

Initialize the cputime module. This must be called after os_init is called and before any other timer API are used. This should be called only once and should be called before the hardware timer is used.

os_cputime_nsecs_to_ticks

Converts the given number of nanoseconds into cputime ticks. Not defined if OS_CPUTIME_FREQ_PWR2 is defined.

os_cputime_ticks_to_nsecs

Convert the given number of ticks into nanoseconds. Not defined if OS_CPUTIME_FREQ_PWR2 is defined.

os_cputime_timer_init

Initialize a CPU timer, using the given HAL timer.

os_cputime_timer_relative

Sets a cpu timer that will expire 'usecs' microseconds from the current cputime.

os_cputime_timer_start

Start a cputimer that will expire at 'cputime'. If cputime has already passed, the timer callback will still be called (at interrupt context).

os_cputime_timer_stop

Stops a cputimer from running. The timer is removed from the timer queue and interrupts are disabled if no timers are left on the queue. Can be called even if timer is not running.

os_default_irq_asm
os_dev_close

Close a device.

os_dev_create

Create a new device in the kernel.

os_dev_initialize_all

Initialize all devices for a given state.

os_dev_lookup

Lookup a device by name.

os_dev_open

Open a device.

os_dev_reset

Clears the device list. This function does not close any devices or free any resources; its purpose is to allow a full system reset between unit tests.

os_dev_resume

Resume the device operation.

os_dev_resume_all

Resume all the devices that were suspended.

os_dev_suspend

Suspend the operation of the device.

os_dev_suspend_all

Suspend all devices.

os_dev_walk

Walk through all devices, calling callback for every device.

os_eventq_designate

@cond INTERNAL_HIDDEN [DEPRECATED]

os_eventq_get

Pull a single item from an event queue. This function blocks until there is an item on the event queue to read.

os_eventq_get_no_wait

Poll an event from the event queue and return it immediately. If no event is available, don't block, just return NULL.

os_eventq_init

Initialize the event queue

os_eventq_inited

Check whether the event queue is initialized.

os_eventq_poll

Poll the list of event queues specified by the evq parameter (size nevqs), and return the "first" event available on any of the queues. Event queues are searched in the order that they are passed in the array.

os_eventq_put

Put an event on the event queue.

os_eventq_remove

Remove an event from the queue.

os_free

Operating system level free(). See description of os_malloc() for reasoning.

os_get_uptime

Get time since boot as os_timeval.

os_get_uptime_usec

Get time since boot in microseconds.

os_gettimeofday

Get the current time of day. Returns the time of day in UTC into the tv argument, and returns the timezone (if set) into tz.

os_idle_task

Idle operating system task, runs when no other tasks are running. The idle task operates in tickless mode, which means it looks for the next time an event in the system needs to run, and then tells the architecture specific functions to sleep until that time.

os_info_init
os_init

Initialize the OS, including memory areas and housekeeping functions. This calls into the architecture specific OS initialization.

os_init_idle_task
os_malloc

Operating system level malloc(). This ensures that a safe malloc occurs within the context of the OS. Depending on platform, the OS may rely on libc's malloc() implementation, which is not guaranteed to be thread-safe. This malloc() will always be thread-safe.

os_mbuf_adj

Adjust the length of a mbuf, trimming either from the head or the tail of the mbuf.

os_mbuf_append

Append data onto a mbuf

os_mbuf_appendfrom

Reads data from one mbuf and appends it to another. On error, the specified data range may be partially appended. Neither mbuf is required to contain an mbuf packet header.

os_mbuf_cmpf

Performs a memory compare of the specified region of an mbuf chain against a flat buffer.

os_mbuf_cmpm

Compares the contents of two mbuf chains. The ranges of the two chains to be compared are specified via the two offset parameters and the len parameter. Neither mbuf chain is required to contain a packet header.

os_mbuf_concat

Attaches a second mbuf chain onto the end of the first. If the first chain contains a packet header, the header's length is updated. If the second chain has a packet header, its header is cleared.

os_mbuf_copydata
os_mbuf_copyinto

Copies the contents of a flat buffer into an mbuf chain, starting at the specified destination offset. If the mbuf is too small for the source data, it is extended as necessary. If the destination mbuf contains a packet header, the header length is updated.

os_mbuf_dup

Duplicate a chain of mbufs. Return the start of the duplicated chain.

os_mbuf_extend

Increases the length of an mbuf chain by the specified amount. If there is not sufficient room in the last buffer, a new buffer is allocated and appended to the chain. It is an error to request more data than can fit in a single buffer.

os_mbuf_free

Release a mbuf back to the pool

os_mbuf_free_chain

Free a chain of mbufs

os_mbuf_get

Get an mbuf from the mbuf pool. The mbuf is allocated, and initialized prior to being returned.

os_mbuf_get_pkthdr

Allocate a new packet header mbuf out of the os_mbuf_pool.

os_mbuf_len

@brief Calculates the length of an mbuf chain.

os_mbuf_off

Locates the specified absolute offset within an mbuf chain. The offset can be one past than the total length of the chain, but no greater.

os_mbuf_pool_init

Initialize a pool of mbufs.

os_mbuf_prepend

Increases the length of an mbuf chain by adding data to the front. If there is insufficient room in the leading mbuf, additional mbufs are allocated and prepended as necessary. If this function fails to allocate an mbuf, the entire chain is freed.

os_mbuf_prepend_pullup

Prepends a chunk of empty data to the specified mbuf chain and ensures the chunk is contiguous. If either operation fails, the specified mbuf chain is freed and NULL is returned.

os_mbuf_pullup

Rearrange a mbuf chain so that len bytes are contiguous, and in the data area of an mbuf (so that OS_MBUF_DATA() will work on a structure of size len.) Returns the resulting mbuf chain on success, free's it and returns NULL on failure.

os_mbuf_trim_front

Removes and frees empty mbufs from the front of a chain. If the chain contains a packet header, it is preserved.

os_mbuf_widen

Increases the length of an mbuf chain by inserting a gap at the specified offset. The contents of the gap are indeterminate. If the mbuf chain contains a packet header, its total length is increased accordingly.

os_memblock_from

Checks if a memory block was allocated from the specified mempool.

os_memblock_get

Get a memory block from a memory pool

os_memblock_put

Puts the memory block back into the pool

os_memblock_put_from_cb

Puts the memory block back into the pool, ignoring the put callback, if any. This function should only be called from a put callback to free a block without causing infinite recursion.

os_mempool_clear

Clears a memory pool.

os_mempool_ext_init

Initializes an extended memory pool. Extended attributes (e.g., callbacks) are not specified when this function is called; they are assigned manually after initialization.

os_mempool_info_get_next

Get information about the next system memory pool.

os_mempool_init

Initialize a memory pool.

os_mempool_is_sane
os_mempool_module_init
os_mempool_unregister

Removes the specified mempool from the list of initialized mempools.

os_mqueue_get

Remove and return a single mbuf from the mbuf queue. Does not block.

os_mqueue_init

Initializes an mqueue. An mqueue is a queue of mbufs that ties to a particular task's event queue. Mqueues form a helper API around a common paradigm: wait on an event queue until at least one packet is available, then process a queue of packets.

os_mqueue_put

Adds a packet (i.e. packet header mbuf) to an mqueue. The event associated with the mqueue gets posted to the specified eventq.

os_msys_count

Count the number of blocks in all the mbuf pools that are allocated.

os_msys_get

Allocate a mbuf from msys. Based upon the data size requested, os_msys_get() will choose the mbuf pool that has the best fit.

os_msys_get_pkthdr

Allocate a packet header structure from the MSYS pool. See os_msys_register() for a description of MSYS.

os_msys_init
os_msys_num_free

Return the number of free blocks in Msys

os_msys_register

MSYS is a system level mbuf registry. Allows the system to share packet buffers amongst the various networking stacks that can be running simultaeneously.

os_msys_reset

De-registers all mbuf pools from msys.

os_mutex_init

Create a mutex and initialize it.

os_mutex_pend

Pend (wait) for a mutex.

os_mutex_release

Release a mutex.

os_pkg_init
os_realloc

Operating system level realloc(). See description of os_malloc() for reasoning.

os_reboot

Reboots the system.

os_sanity_check_init

Initialize a sanity check

os_sanity_check_register

Register a sanity check

os_sanity_check_reset

Reset the os sanity check, so that it doesn't trip up the sanity timer.

os_sanity_init

@cond INTERNAL_HIDDEN

os_sanity_run
os_sanity_task_checkin

Provide a "task checkin" for the sanity task.

os_sched

Performs context switch if needed. If next_t is set, that task will be made running. If next_t is NULL, highest priority ready to run is swapped in. This function can be called when new tasks were made ready to run or if the current task is moved to sleeping state.

os_sched_ctx_sw_hook
os_sched_get_current_task

Returns the currently running task. Note that this task may or may not be the highest priority task ready to run.

os_sched_insert
os_sched_next_task
os_sched_os_timer_exp

@cond INTERNAL_HIDDEN

os_sched_remove
os_sched_resort
os_sched_set_current_task
os_sched_sleep
os_sched_wakeup
os_sched_wakeup_ticks
os_sem_init

Initialize a semaphore

os_sem_pend

os sem pend

os_sem_release

Release a semaphore.

os_set_env
os_settimeofday

Set the time of day. This does not modify os time, but rather just modifies the offset by which we are tracking real time against os time. This function notifies all registered time change listeners.

os_start

Start the OS and begin processing.

os_started

Check whether or not the OS has been started.

os_system_reset

Performs a system reset. This is typically done at the end of a reboot procedure.

os_task_count

Return the number of tasks initialized.

os_task_info_get_next

Iterate through tasks, and return the following information about them:

os_task_remove

Removes specified task XXX NOTE: This interface is currently experimental and not ready for common use

os_tick_idle

Halt CPU for up to 'n' ticks.

os_tick_init

Set up the periodic timer to interrupt at a frequency of 'os_ticks_per_sec'. 'prio' is the cpu-specific priority of the periodic timer interrupt.

os_time_advance

Move OS time forward ticks.

os_time_change_listen

Registers a time change listener. Whenever the time is set, all registered listeners are notified. The provided pointer is added to an internal list, so the listener's lifetime must extend indefinitely (or until the listener is removed).

os_time_change_remove

Unregisters a time change listener.

os_time_delay

Puts the current task to sleep for the specified number of os ticks. There is no delay if ticks is 0.

os_time_get

Get the current OS time in ticks

os_time_is_set
os_time_ms_to_ticks

Converts milliseconds to OS ticks.

os_time_ticks_to_ms

Converts OS ticks to milliseconds.

task_init

Initialize a task.

Type Definitions

__int16_t
__int32_t
__int64_t
__uint8_t
__uint16_t
__uint32_t
hal_timer_cb
os_dev_close_func_t
os_dev_init_func_t

Initialize a device.

os_dev_open_func_t
os_dev_resume_func_t
os_dev_suspend_func_t
os_error
os_event_fn
os_membuf_t
os_mempool_put_fn

Block put callback function. If configured, this callback gets executed whenever a block is freed to the corresponding extended mempool. Note: The os_memblock_put() function calls this callback instead of freeing the block itself. Therefore, it is the callback's responsibility to free the block via a call to os_memblock_put_from_cb().

os_sanity_check_func_t
os_sr_t
os_stack_t
os_stime_t
os_task_func_t
os_task_state

Task states

os_time_change_fn

Callback that is executed when the time-of-day is set.

os_time_t