I think “ISO C” refers here to C89, C99 and C11 (C vs. C++). C99/11 spec says that type qualifier properties are only meaningful for expressions that are lvalues. So, the spec does not provide a way to define a “const function return value”. There’s a GCC attribute (const) for doing that, but we cannot add GCC specifics in the API definition. Also API should compile cleanly with typical GCC flags (–std=c99 –Wall –W (== –Wextra)).
So, nothing to be changed in the patch at this time. -Petri From: EXT Bill Fischofer [mailto:[email protected]] Sent: Monday, September 14, 2015 5:41 PM To: Savolainen, Petri (Nokia - FI/Espoo) Cc: LNG ODP Mailman List Subject: Re: [lng-odp] [API-NEXT PATCH v2 2/3] api: thread: added thread count max From the GCC manual. It's not clear why we want this hyper-specific flag as standard for ODP. It seems counterproductive. Whether or not ISO C ignores const return types, we're using them as the language intends. -Wignored-qualifiers (C and C++ only) Warn if the return type of a function has a type qualifier such as const. For ISO C such a type qualifier has no effect, since the value returned by a function is not an lvalue. For C++, the warning is only emitted for scalar types or void. ISO C prohibits qualified void return types on function definitions, so such return types always receive a warning even without this option. This warning is also enabled by -Wextra. On Mon, Sep 14, 2015 at 9:23 AM, Savolainen, Petri (Nokia - FI/Espoo) <[email protected]<mailto:[email protected]>> wrote: From: EXT Bill Fischofer [mailto:[email protected]<mailto:[email protected]>] Sent: Friday, September 11, 2015 6:50 PM To: Savolainen, Petri (Nokia - FI/Espoo) Cc: LNG ODP Mailman List Subject: Re: [lng-odp] [API-NEXT PATCH v2 2/3] api: thread: added thread count max On Fri, Sep 11, 2015 at 7:55 AM, Petri Savolainen <[email protected]<mailto:[email protected]>> wrote: Maximum thread count is needed for preparation to remove ODP_CONFIG_MAX_THREADS. It can be used e.g. to allocate resources per thread ID. Thread IDs range from 0 to count_max - 1. Signed-off-by: Petri Savolainen <[email protected]<mailto:[email protected]>> --- include/odp/api/thread.h | 14 ++++++++++++-- platform/linux-generic/odp_thread.c | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/odp/api/thread.h b/include/odp/api/thread.h index 89eae2b..746a830 100644 --- a/include/odp/api/thread.h +++ b/include/odp/api/thread.h @@ -54,7 +54,7 @@ typedef enum odp_thread_type_e { * Get thread identifier * * Returns the thread identifier of the current thread. Thread ids range from 0 - * to ODP_CONFIG_MAX_THREADS-1. The ODP thread id is assinged by + * to odp_thread_count_max() - 1. The ODP thread id is assinged by * odp_init_local() and freed by odp_term_local(). Thread id is unique within * the ODP instance. * @@ -68,13 +68,23 @@ int odp_thread_id(void); * Returns the current ODP thread count. This is the number of active threads * running the ODP instance. Each odp_init_local() call increments and each * odp_term_local() call decrements the count. The count is always between 1 and - * ODP_CONFIG_MAX_THREADS. + * odp_thread_count_max(). * * @return Current thread count */ int odp_thread_count(void); /** + * Maximum thread count + * + * Returns the maximum thread count, which is a constant value and set in + * ODP initialization phase. + * + * @return Maximum thread count + */ +int odp_thread_count_max(void); Should be: const int odp_thread_count_max(void); Since these are implementation-defined constants that are being returned. In file included from ./include/odp/thread.h:28:0, from ./include/odp_buffer_internal.h:30, from ./include/odp_pool_internal.h:25, from odp_buffer.c:8: ../../include/odp/api/thread.h:85:11: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers] const int odp_thread_count_max(void); It fails to build with our compiler warning level. Compiler seems to ignore const as function return type qualifier. -Petri + +/** * Thread type * * Returns the thread type of the current thread. diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-generic/odp_thread.c index 770c64e..a8ce133 100644 --- a/platform/linux-generic/odp_thread.c +++ b/platform/linux-generic/odp_thread.c @@ -204,6 +204,11 @@ int odp_thread_count(void) return thread_globals->num; } +int odp_thread_count_max(void) const int odp_thread_count_max(void) +{ + return __ODP_CONFIG_MAX_THREADS; +} + odp_thread_type_t odp_thread_type(void) { return this_thread->type; -- 2.5.1 _______________________________________________ lng-odp mailing list [email protected]<mailto:[email protected]> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
