Changes in v3: - Change types of lock_count and lock indices from uint32_t to unsigned
--- Changes in v2: - Incorporate Petri review comments --- Revise the ordered lock APIs per recent ARCH discussions. Ordered locks are now specified via the new lock_count parameter within the odp_schedule_param_t section of the odp_queue_param_t passed to odp_queue_create(). As a result odp_schedule_order_lock_init() is deprecated and removed. Implementations specify the maximum number of ordered locks per queue they support via the new config.h entry ODP_CONFIG_MAX_ORDERED_LOCKS_PER_QUEUE. Implementations SHOULD support at least one ordered lock and MAY support more than one. To query the lock count for an ordered queue the new API odp_queue_lock_count() is added. odp_schedule_order_lock() and odp_schedule_order_unlock() now take a single argument: the index [0..odp_queue_lock_count()-1] of the ordered lock to be locked or unlocked. Ordered locks may only be used once per event. If processing an event requires multiple ordered criticial sections, each should be protected by a separate ordered lock. Trying to obtain an ordered lock when not running in an ordered context, or referencing a lock index that is out of range for that context results in undefined behavior. Note that part 5 of this patch is large because changing the ordered lock APIs requires that their linux-generic implementation as well as the scheduler validation test be changed simulataneously to preserve incremental compilability. Part 5 also contains a spurious checkpatch warning relating to quoted split strings. This should disappear with the expected revision of the ODP checkpatch rules to allow this convention, as previously agreed. Bill Fischofer (5): api: config: add config option for max ordered locks per queue api: queue: add odp_queue_lock_count() API api: schedule: add lock_count to odp_schedule_param_t api: schedule: remove odp_schedule_order_lock_init() API api: schedule: revise definition of ordered locks include/odp/api/config.h | 5 ++ include/odp/api/queue.h | 13 +++++ include/odp/api/schedule.h | 62 ++++++++++---------- include/odp/api/schedule_types.h | 2 + .../include/odp/plat/schedule_types.h | 2 - .../linux-generic/include/odp_buffer_internal.h | 2 +- .../linux-generic/include/odp_queue_internal.h | 19 ++++--- platform/linux-generic/odp_queue.c | 66 ++++++++++++++-------- platform/linux-generic/odp_schedule.c | 15 +++-- test/validation/scheduler/scheduler.c | 63 +++++++++++++++------ 10 files changed, 159 insertions(+), 90 deletions(-) -- 2.1.4 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp