[pypy-dev] [pypy-svn] r45269 - in pypy/dist/pypy/rpython/module: . tes
fijal at genesilico.pl
Mon Jul 23 14:36:37 CEST 2007
Amaury Forgeot d'Arc wrote:
> Hello again,
>> Author: fijal
>> Date: Mon Jul 23 13:52:26 2007
>> New Revision: 45269
>> Add os.uname. RPython level. segfaults ll2ctypes in some strange way,
>> I'm not sure I want to know
>> Modified: pypy/dist/pypy/rpython/module/ll_os.py
>> --- pypy/dist/pypy/rpython/module/ll_os.py (original)
>> +++ pypy/dist/pypy/rpython/module/ll_os.py Mon Jul 23 13:52:26 2007
>> @@ -110,6 +110,34 @@
>> register_external(os.setsid, , int,
>> +# ------------------------------- os.uname
>> +if hasattr(os, 'uname'):
>> + UTSNAMEP = rffi.CStruct('utsname', ('sysname', rffi.CCHARP),
>> + ('nodename', rffi.CCHARP),
>> + ('release', rffi.CCHARP),
>> + ('version', rffi.CCHARP),
>> + ('machine', rffi.CCHARP),
>> + ('stuff', rffi.CCHARP))
> I think the error comes from the ctypes interpretation of the
> structure. utsname is not made of char* pointers, but (at least on the
> debian machine I have access to) the members are actually fixed arrays
> of chars, the lengths of which are not public, but well specified in
> It should make no difference when translated, because the code looks
> like v->sysname etc.
> ctypes on the other hand needs to know the precise sizeof and offsets
> of each member.
> I tried to modify the _socket module to also use rffi, and had the
> same problem.
> I think that we will need a tool similar to
> pypy.rpython.rctypes.tool.ctypes_platform, which generates and
> compiles C code to get the different sizes and offsets.
> (We will need support for C defines as well)
> Hope this helps,
I think armin worked a bit on it. We need some more support for that I'm
afraid. Let's dig...
More information about the Pypy-dev