Re: [PATCH v4 4/5] Adjust libfdt.h to work with swig

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi David,

On 9 February 2017 at 22:01, David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> wrote:
> On Sun, Feb 05, 2017 at 01:13:22PM -0700, Simon Glass wrote:
>> There are a few places where libfdt.h cannot be used as is with swig:
>>
>> - macros like fdt_totalsize() have to be defined as C declarations
>> - fdt_offset_ptr() and fdt_getprop_namelen() need special treatment due to
>>     a TODO in the wrapper for fdt_getprop()
>
> fdt_offset_ptr() is a very low-level function which should be rarely
> needed outside libfdt internals, even in C.  I think it makes sense to
> exclude it from the Python interface.

Sounds good.

>
> fdt_getprop_namelen() is primarily to make certain things easier in C
> where copying and slicing up strings can be quite painful.  Since
> that's trivial in Python, I don't think there's any need to expose the
> namelen() functions in Python.

Yes that's a good point, will drop it.

>
>>
>> The second one can hopefully be resolved by someone with more knowledge of
>> SWIG than me.
>>
>> Add #ifdefs to work around this problem.
>>
>> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
>> ---
>>
>> Changes in v4:
>> - Add new patch to adjust libfdt.h to work with swig
>>
>> Changes in v3: None
>> Changes in v2: None
>>
>>  libfdt/libfdt.h | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h
>> index c69e918..2e78754 100644
>> --- a/libfdt/libfdt.h
>> +++ b/libfdt/libfdt.h
>> @@ -143,7 +143,9 @@
>>  /* Low-level functions (you probably don't need these)                */
>>  /**********************************************************************/
>>
>> +#ifndef SWIG /* Use a special rule in libfdt.swig instead */
>>  const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
>> +#endif
>>  static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
>>  {
>>       return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
>> @@ -210,7 +212,7 @@ int fdt_next_subnode(const void *fdt, int offset);
>>  /**********************************************************************/
>>  /* General functions                                                  */
>>  /**********************************************************************/
>> -
>> +#ifndef SWIG /* Repeated in libfdt.swig (we cannot use macros) */
>
> You need to duplicate them in libfdt.swig, certainly, but why do you
> need to explicitly cut them out here?  Isn't swig smart enough to know
> it can't do anything with these?

Because the #define stuffs up my declarations. But it's easy to put
the declarations first to avoid that problem, so I'll do that.

[..]

Regards,
Simon
--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux