Recommendation for stack sizes

dansear wrote on Friday, July 27, 2007:

Would it be possible to change the ‘unsigned portSHORT usStackDepth;’
to ‘unsigned portLONG  ulStackDepth;’ in struct tskTaskControlBlock?
(and update the modified references)

First, yes, I did need a stack larger than 64k variables.

2nd, being a short causes some compilers to emit slightly more code
than if the type were the natural integer size.

3rd, being a short in a structure opens up the possibilities
for problems with structure packing (although not likely an issue
with this structure yet).

Dan Searles

rtel wrote on Friday, July 27, 2007:

You have been busy!  Thanks for your comments and suggestions.

The stack size used to be unsigned portBASE_TYPE, but this caused problems on some 8bit systems where the stack could not be greater than 0xff.  Long was considered too wasteful on 8bitters (mainly because of its use in the TCB rather than just as a function parameter), so short became the compromise. has come a long way since then however and finds most uses in the 32bit world.


adarkar9 wrote on Friday, July 27, 2007:

>…finds most uses in the 32bit world.

Really?  Wow.  Please don’t forget about all the 8-bitters though.  I still agree that “long” is too wasteful.  If you make any change, perhaps you should make it configurable.