[Tutor] Passing nested structures to fcntl.ioctl
spir
denis.spir at gmail.com
Mon Mar 8 10:10:10 CET 2010
On Mon, 8 Mar 2010 11:57:35 +0530 (IST)
"Noufal Ibrahim" <noufal at nibrahim.net.in> wrote:
> Hello everyone,
> I have some code that's calling fcntl.ioctl. I need to pass a nested
> structure as the 3rd argument of the function. Something like this
>
> typedef struct coordinates{
> int x;
> int y;
> } coordinates;
>
> typedef struct point{
> int amp;
> coordinates* coord;
> } point;
>
> How would I do this? I need to allocate a point structure and then a
> coordinate structure and link them up together via the coord member of
> point, fill them up with values and pass it to the fcntl.ioctl. The
> actual IOCTL implementation will do the indirection to read out the
> data.
>
> I can't use ctypes since I'm working on an embedded system with an ARM
> core that doesn't have ctypes. The struct module doesn't seem to help
> due to the indirection.
>
> Any ideas? I'm personally planning to write a small C extension that
> creates the structure based on a specification in memory and then
> passes that to the IOCTL call directly but that looks like some work. I
> was also told to take a look at Cython which basically seems to be an
> easy way of doing what I'm planning. Is there a quicker/easier way?
>
> Thanks.
If your point is to implement a type (point) in C, for performance certainly, and reuse it from a dynamic language, then I'm not sure python is the best choice (*). Python programmers code in python e basta. C-python bindings are far from beeing simplistic.
http://wiki.cython.org/WrappingCorCpp
Denis
(*) Lua instead is well-known for this kind of stuff; especially on particuliar hardware like ARM. Lua's own implementation is 100% plain ANSI C standard and Lua-C bindings are probably as straightforward as they can be.
http://lua-users.org/wiki/BindingCodeToLua
--
________________________________
la vita e estrany
spir.wikidot.com
More information about the Tutor
mailing list