[Vm-dev] Why StandardFileStream fileID is 16 bytes in Linux while
20 bytes in OSX?
tim at rowledge.org
Sat Jan 9 23:37:16 UTC 2016
> On 09-01-2016, at 2:46 PM, Mariano Martinez Peck <marianopeck at gmail.com> wrote:
> ou said that in the SqueakVM it is 64 bits. By SqueakVM you mean your Cog (and not our Pharo builds) or you mean the old interpreter VM?
> Should I open an issue somewhere so that we can make it 64 bits file size?
It’s been able to be 64bits for a long while now - I remember having to futz around with it on the RISC OS branch *ages* ago, before Cog. Ah, in fact I see it was 2002.
In your sqPlatformSpecific.h file you ought to be seeing
typedef off_t squeakFileOffsetType;
#define squeakFileOffsetType __int64
#define squeakFileOffsetType unsigned long long
etc. For unixes the off_t would usually be a long long ie 64 bits. It’s tied to the possible size of files so on any OS that allows >4Gb file size you’d expect to have a type used for pile pointers that handles that.
If you have squeakFileOffsetType anything other than a 64bit type, something is wrong. If it is being defined as a 32bit size than I would anticipate warning (at least) from the C compiler when tackling the file primitives; look at sqFilePluginBasicPrims.c>sqFileGetPosition() for example.
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Gotta run, the cat's caught in the printer.
More information about the Vm-dev