堆栈
堆栈是一个内核对象,它实现了传统的最后入,先出(LIFO)队列,允许线程和isr添加和删除有限数量的整数数据值。
概念
可以定义任意数量的堆栈(仅受可用RAM的限制)。每个堆栈都由其内存地址引用。
堆栈具有以下关键属性:
已添加但尚未删除的整数数据值的队列。队列使用stack_data_t值数组实现,必须在本机词边界上对齐。stack_data_t类型对应于本机字的大小,即32位或64位,这取决于CPU架构和编译模式。
可在数组中排队的最大数据值量。
堆栈必须初始化才能使用。这将将其队列设置为空。
数据值可以通过线程或ISR添加到堆栈中。如果存在等待线程,则该值将直接提供给等待线程;否则,该值将添加到LIFO的队列中。
注意:
如果启用了CONFIG_NO_RUNTIME_CHECKS
,内核将不会检测并阻止向已经达到其最大排队值数量的堆栈添加数据值的尝试。将数据值添加到已满的堆栈中,该数据值将导致数组溢出,并导致不可预测的行为。
数据值可以通过线程从堆栈中删除。如果堆栈的队列为空,则线程可以选择等待给出它。任意数量的线程都可以同时在一个空的堆栈上等待。当添加一个数据项时,它将被授予等待时间最长的最高优先级线程。
注意:<