With that arrangement, the amount of dictionary space available to plug-in device drivers was virtually unlimited!
Weel, I ran into this problem while testing (QLogic iSCSI) FCode I had developed for the SPARC. I experimented with a dummy fcode consisting of only constant declarations. The FCode failed to get interpreted when the total tokenized size reached just a little above 50KB (that's kilo-bytes). Unfortunately I system OBP would not let me use the "here" word to find out the exact size of the dictionary space my dummy FCode used up. So I figured the dictionary space available for my FCode is basically a portion of the overall dictionary space available to the system. In short, every device FCode has a limit of dictionary space available to it.
Is my understand correct? If so, then this is what my question is about concerning OpenBIOS.
-Asif
-----Original Message----- From: openbios-bounces@openbios.org [mailto:openbios-bounces@openbios.org] On Behalf Of David L. Paktor Sent: Wednesday, August 22, 2007 1:18 AM To: The OpenBIOS Mailinglist Subject: Re: [OpenBIOS] Dictionary size limit per device instance
Stefan Reinauer wrote:
Dear Äsif
- Asif Haswarey asif.haswarey@qlogic.com [070822 01:06]:
Does anyone happen to know what the dictionary size upper limit (for openbios) is hardcoded to per device instance?
If I remember correctly there is no limit per device instance, but during bootstrap the dictionary size is limited to 256k: kernel/bootstrap.c:#define DICTIONARY_SIZE (256*1024) /* 256k for the dictionary */ and I think that value applies for the ports, too.
It's just an arbitrary numbers, we chose it a couple of years ago when 256k was the usual size of system flash roms, so the resulting openbios would always fit in a such a small chip with LinuxBIOS and a compressed OpenBIOS payload.
Stefan
Well, Flash ROMs certainly have expanded since then! I understand that sizes of 8 or 16 Meg are commonplace now, and that 4 Meg sizes are now considered obsolete (or at least, obsolescent) and that 8 Meg-gers are heading rapidly in that direction!
You might want to browse around the Sun sources. What happened there, basically, was that, after the image in ROM was decompressed into memory and when FCode probing took place, the only real limits on dictionary size were the amount of physical memory and the difference between the start of the dictionary and the top of the address space!
There was a variable called LIMIT which marked the end of memory that was currently allocated for, and mapped to, the dictionary's address-space. The word ALLOT had a clause that tested for the requested allotment going past LIMIT, and, if needed, would "just" allocate and map a large chunk of more memory that would last for a while....
With that arrangement, the amount of dictionary space available to plug-in device drivers was virtually unlimited!