bldc/include/stack.h

179 lines
5.0 KiB
C
Raw Normal View History

/** \file stack.h */
/*
Copyright 2019 Joel Svensson svenssonjoel@yahoo.se
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef STACK_H_
#define STACK_H_
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include "lbm_types.h"
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
lbm_uint* data;
Squashed 'lispBM/lispBM/' changes from 6199703d..43ebce71 43ebce71 Fix formatting int print.c and constants that default to float/double fa220f0b update gc statistics collection a small bit 25b20686 fix get_heap_state 783d774e Arrays of 64bit values passes the associated tests. More tests are needed though ff40d02f working on 64bit arrays. more testing needed 204bea39 CMP as a macro instead of 8 different functions 44bb152d added a set of math extensions grabbed from Benjamin's bldc repo 9c34b4cd added string extensions from benjamins bldc repo b4370155 merge in changes on master into dev64bit c129344b fixed masking bug in fundamentals ed3ab5be closed down ome warnings when building 64bit d46564c9 expanded functionality of type-of to cover 64bit types and preparations for arrays of 64bit values f7cb5538 added more 64bit functionality to fundamentals and a tiny amount of tests 4dafbe6c added decoders for 64bit values 63026a8a added 64bit value literals 8c1f0f0f made GC aware of lbm_memory allocated values 17148ada 64 bit values allocated on lbm_memory on 32 bit version 4445e5a8 sketch of encoders for 64 bit values f636e64d suffix for the lisp size of int and uint are now i and u instead of i28 and u28 840723ca preparations and planning for 64bit types in both 32 and 64 bit versions. 13675dda 64bit up and running. but there are many TODOs 033bfd9a small fixes following bug hunt f5c984de fix bug in representation of important masks and constants d40b2437 Merge branch 'master' into dev64bit 06f9603f Merge branch 'master' into dev64bit 69950ba1 32 bit tests are ok 46b6fa28 Merge branch 'master' into dev64bit b9e2c993 work in progress 8dff9b4d work in progress a241aded work in progress 4738e0da update year in lbm_types ca469923 made it possible to run the same tests as on the 32 bit version on the 64 bit code 85acec30 small tweaks tp create_ctx, use correct type bf0286a7 Merge branch 'master' into dev64bit 824e1634 Merge branch 'master' into dev64bit 04a97f17 lots of testing needed ea862cce a bunch of changes in preparation for 64bit compatibility. git-subtree-dir: lispBM/lispBM git-subtree-split: 43ebce71a281f4a158b8d2dec3fc537c26766ec3
2022-03-25 07:47:05 -07:00
lbm_uint sp;
lbm_uint size;
lbm_uint max_sp;
} lbm_stack_t;
/** Allocate a stack on the symbols and arrays memory.
* lbm_memory_init must have been run before this function or it will fail.
* \param s Pointer to an lbm_stack_t to initialize.
* \param stack_size Size in 32 bit words of stack to allocate.
* \return 1 on success and 0 on failure.
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_stack_allocate(lbm_stack_t *s, lbm_uint stack_size);
/** Create a stack in a statically allocated array.
*
* \param s Pointer to an lbm_stack_t to initialize.
* \param data Pointer to array of 32 bit words to use as the stack storage.
* \param size Size in number of 32 bit words.
* \return 1
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_stack_create(lbm_stack_t *s, lbm_uint* data, lbm_uint size);
/** Free a stack allocated on the lispbm_memory.
*
* \param s Pointer to lbm_stack_t to free.
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
void lbm_stack_free(lbm_stack_t *s);
/** Sets the stack SP to 0.
*
* \param s Stack to clear.
* \return 1
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_stack_clear(lbm_stack_t *s);
/** Get a pointer to the nth element (from the top) of a stack.
*
* \param s Stack.
* \param n Index.
* \return Pointer into the stack or NULL.
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
lbm_uint *lbm_get_stack_ptr(lbm_stack_t *s, lbm_uint n);
/** Drop n elements (from the top) of a stack.
*
* \param s Stack to drop elements from.
* \param n Number of elements to drop.
* \return 1 on Success and 0 on failure.
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_stack_drop(lbm_stack_t *s, lbm_uint n);
/** Reserve place for n elements on the stack and
* move the stack pointer to the new top.
* \param s Stack to reserve values on
* \param n Number of values to reserve
* \return Pointer into stack position of reserver value 0 or NULL
* on failure
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
lbm_uint *lbm_stack_reserve(lbm_stack_t *s, lbm_uint n);
/** Push an element onto a stack.
*
* \param s Stack to push a value onto.
* \param val Value to push to the stack.
* \return 1 on success and 0 on failure (stack is full).
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_push(lbm_stack_t *s, lbm_uint val);
/** Pop a value from a stack.
*
* \param s Stack to pop a value from.
* \param val Pointer to an lbm_value to store the pop:ed value int.
* \return 1 on success and 0 on failure (stack is empty).
*/
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
int lbm_pop(lbm_stack_t *s, lbm_uint *val);
/** Check if a stack is empty.
*
* \param s Stack to check.
* \return 1 if stack is empty otherwise 0.
*/
static inline int lbm_stack_is_empty(lbm_stack_t *s) {
if (s->sp == 0) return 1;
return 0;
}
/** Push 2 values to a stack.
*
* \param s Stack to push values onto.
* \param val0 Is pushed first.
* \param val1 Is pushed last.
* \return 1 on success and 0 on failure (stack is full).
*/
int lbm_push_2(lbm_stack_t *s, lbm_uint val0, lbm_uint val1);
/** Push 3 values to a stack.
*
* \param s Stack to push values onto.
* \param val0
* \param val1
* \param val2
* \return 1 on success and 0 on failure (stack is full).
*/
int lbm_push_3(lbm_stack_t *s, lbm_uint val0, lbm_uint val1, lbm_uint val2);
/** Push 4 values to a stack.
*
* \param s Stack to push values onto.
* \param val0
* \param val1
* \param val2
* \param val3
* \return 1 on success and 0 on failure (stack is full).
*/
int lbm_push_4(lbm_stack_t *s, lbm_uint val0, lbm_uint val1, lbm_uint val2, lbm_uint val3);
/** Push 5 values to a stack.
*
* \param s Stack to push values onto.
* \param val0
* \param val1
* \param val2
* \param val3
* \param val4
* \return 1 on success and 0 on failure (stack is full).
*/
int lbm_push_5(lbm_stack_t *s, lbm_uint val0, lbm_uint val1, lbm_uint val2, lbm_uint val3, lbm_uint val4);
/** Pop 2 values from a stack.
*
* \param s Stack to pop values from.
* \param r0 Pointer to lbm_value where the first pop:ed value will be stored.
* \param r1 Pointer to lbm_value where the seconds pop:ed value will be stored.
* \return 1 on success and 0 on failure (stack is empty).
*/
int lbm_pop_2(lbm_stack_t *s, lbm_uint *r0, lbm_uint *r1);
/** Pop 3 values from a stack.
*
* \param s Stack to pop values from.
* \param r0
* \param r1
* \param r2
* \return 1 on success and 0 on failure (stack is empty).
*/
int lbm_pop_3(lbm_stack_t *s, lbm_uint *r0, lbm_uint *r1, lbm_uint *r2);
Squashed 'lispBM/lispBM/' changes from 6f442405..28c56c43 28c56c43 Update README.md d975e8b6 update readme 9e0bbcba update readme ad38f2d0 updated readme with a note about switch of scheduler 756f2d71 Round-robin scheduling quota can be set from the C code 45edcd9d update: fix typo dade6935 Added atomic operator 4ff6665a Mostly ok round robin scheduling at this point I think. a6af047a experimentation and planning e69d36e7 fair round robin scheduler running but slow 3a0e6905 Merge branch 'master' into sched0 2784f8e5 bugfix symrepr.c c464a78e work in progress 207a0b92 Merge branch 'master' into sched0 a916a1af experimentation and preparations b9565fbb broke out a bunch of useful definitions into an lbm_defines.h file 1fb91025 update to platform_uart for chibios 16640653 additions to chibios platform uart and some additions to string extensions 6bfbb376 added array-clear 8e2bc4a3 Improvements to revamped reader 84ff5198 Considerable rewamping of the reader - passes all tests but there are some issues to resolve bfdf352f minor tweak f33fde26 Modifications to uart stream in platform chibios 571a1382 low-level character stream from a uart. This has some problems! 2f49efe9 Experimentation streams 4437c69e tweaks to platform uart dd181414 fix typo in platform_uart.c for chibios 5b9ae388 chibios repl uart tested and seems ok 49409772 untested uart extensions in chibios repl af5d03d8 untested uart implementation for chibios repl 5bde526b added one more test case for conditionals dceb4d26 added some new tests 0f477d09 pedantry dc5b08d9 Some pedantic tweaks to close some jump-misses-init warnings c5aff865 A pass to make static analysis happy 0bdd23c3 update 12a93acc update ch3 with some small tweaks ac881933 added more text to chapter3 about concurrency and message passing d8589b75 update 59229152 update 85ef5a79 update lbmref description of namespace 4fd7e48f added information about namespace to lbmref b93cd379 added some tests of namespaces and updated the compressor to allow the : character 48a99c13 Merge branch 'master' of github.com:svenssonjoel/lispbm 8f019213 updated behaviour of lbm_define related to #variables and the addition of simplistic namespaces 1d824a4e Update ch3_concurrency.md dcb2ef38 wip a0d5971d work in progress 4c9818c6 typo 06fbaac7 work in progress ch3 26a466e0 chapter 3 in progress f376ae8e ch3 concurrency in progress d1399247 added some images to manual ch2 ac813050 fix bug that surfaces if no dynamic load callback is present git-subtree-dir: lispBM/lispBM git-subtree-split: 28c56c436d3cb621a775bb648d60660563c5352e
2022-09-04 07:08:58 -07:00
#ifdef __cplusplus
}
#endif
#endif