Home
Developer Resources
QNX RTOS v4
QNX RTOS v4 Knowledge Base

QNX RTOS v4 Knowledge Base

Foundry27
Foundry27
QNX RTOS v4 project
Resources

QNX RTOS v4 Knowledge Base

Title Code segment size limit as displayed in "sin" and "sin mem"
Ref. No. QNX.000007862
Category(ies) Utilities, Kernel
Issue 'sin mem' produces the following output:

PROGRAM                  PID
sys/Proc32                  1
  0005 F0000000 122880 -B-3--------DC-  000D F0040000  268M -B-3--------D--
  10A9 00035000  28672 -B--+--G-----C-  0009 FF801000  29056 ---3---G-------

How does the size limit reflect the code and data segments from 'sin'?


Solution 'sin mem' cannot be used to determine the current size of the code segment and how much of it is being.

Suppose a segment (5) had a base of 0x70000 and a length of 20k (0x5000):

segment 0x5:
base 0x70000  {virtual addresses}      { physical addresses}
x09          -> [0x70000]              ->  <nowhere>
              -> [0x71000]              ->  0x100000
              -> [0x72000]              ->  <nowhere>
              -> [0x73000]              ->  0x0ff000     
              -> [0x74000]              ->  0x1f0000
lim 0x4fff

So, the segment has a SPAN of 20k, however only 3 of the 5 pages actually occupy memory, so it has a SIZE of 12k.

'Sin mem' shows the SPAN of the segments; 'sin' shows the SIZE of them.

Proc32 configures it's data segment to have a large SPAN which allows it to change page mappings and lookup page addresses without
having to muck around with segments. It's data segment has a considerably smaller SIZE.