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

Re: [Xen-devel] [PATCH 01/27 v10] xen/arm: vpl011: Define common ring buffer helper functions in console.h



Hi Jan,

Yes, after including the __STRICT_ANSI__ check the headers.chk check
passes. But I had to include string header file (after suggestion from Stefano)
for fixing the headers++.chk.

I have pasted the changes below:

diff --git a/xen/include/Makefile b/xen/include/Makefile
index 1299b19..c90fdee 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -98,6 +98,7 @@ PUBLIC_C99_HEADERS := public/io/9pfs.h public/io/pvcalls.h
 PUBLIC_ANSI_HEADERS := $(filter-out public/%ctl.h public/xsm/%
public/%hvm/save.h $(PUBLIC_C99_HEADERS), $(PUBLIC_HEADERS))

 public/io/9pfs.h-prereq := string
+public/io/console.h-prereq := string
 public/io/pvcalls.h-prereq := string

 headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile
diff --git a/xen/include/public/io/console.h b/xen/include/public/io/console.h
index 5e45e1c..0f0711f 100644
--- a/xen/include/public/io/console.h
+++ b/xen/include/public/io/console.h
@@ -40,7 +40,9 @@ struct xencons_interface {
     XENCONS_RING_IDX out_cons, out_prod;
 };

+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 DEFINE_XEN_FLEX_RING(xencons);
+#endif

 #endif /* __XEN_PUBLIC_IO_CONSOLE_H__ */

Regards,
Bhupinder

On 25 September 2017 at 08:49, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 23.09.17 at 00:44, <sstabellini@xxxxxxxxxx> wrote:
>> On Fri, 22 Sep 2017, Bhupinder Thakur wrote:
>>> DEFINE_XEN_FLEX_RING(xencons) defines common helper functions such as
>>> xencons_queued() to tell the current size of the ring buffer,
>>> xencons_mask() to mask off the index, which are useful helper functions.
>>> pl011 emulation code will use these helper functions.
>>>
>>> io/console.h includes io/ring.h which defines DEFINE_XEN_FLEX_RING.
>>>
>>> In console/daemon/io.c, string.h had to be included before io/console.h
>>> because ring.h uses string functions.
>>>
>>> Signed-off-by: Bhupinder Thakur <bhupinder.thakur@xxxxxxxxxx>
>>> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
>>> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
>>> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>>
>> Unfortunately this patch breaks the build on x86. The reason is that
>> DEFINE_XEN_FLEX_RING requires C99, and the current header checks in
>> xen/include/Makefile use ANSI C.
>>
>> The only two headers to use DEFINE_XEN_FLEX_RING so far are pvcalls and
>> 9pfs that are both explicitly marked as c99 in xen/include/Makefile, see
>> PUBLIC_C99_HEADERS.
>>
>> One way to solve this problem would be to mark console.h as one of the
>> c99 headers, but I am guessing that Jan will want to keep it ANSI C.
>>
>> In that case, we could make DEFINE_XEN_FLEX_RING ANSI C, which is ugly
>> but possible. It requires turning the static inline functions in ring.h
>> into macros.
>>
>> Otherwise, we could take DEFINE_XEN_FLEX_RING(xencons) out of
>> io/console.h. We could move it to a new header file, and the new header
>> file could be C99.
>>
>> Jan, do you have other suggestions?
>
> Moving the C99 requiring parts to a separate header is certainly
> a reasonable option. Another might be to frame the additions by
> a __STRICT_ANSI__ and/or __GNUC__ and/or __STDC_VERSION__
> check (we have some examples elsewhere, but they may not be
> exact fits for the case here).
>
> Jan
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.