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

Reply via email to