[pypy-dev] [pypy-svn] r45269 - in pypy/dist/pypy/rpython/module: . tes

Maciek Fijalkowski 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
>>
>> Modified:
>>    pypy/dist/pypy/rpython/module/ll_os.py
>>    pypy/dist/pypy/rpython/module/test/test_posix.py
>> Log:
>> 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, 
>> export_name="ll_os.ll_os_setsid",
>>                        llimpl=setsid_lltypeimpl)
>>
>> +# ------------------------------- 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
> sys/utsname.h.
>
> 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 mailing list