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

Reply via email to