1. 30 Apr, 2020 1 commit
    • Philippe Gerum's avatar
      lib: introduce the interface to observables · f27fc993
      Philippe Gerum authored
      
      
      Since ABI 23, the core provides the new observable element, which
      enables the observer design pattern. Any EVL thread is in and of
      itself an observable which can be monitored for events too.
      
      As a by-product, the poll interface can now be given a user-defined
      opaque data when subscribing file descriptors to poll elements, which
      the core passes back on return to evl_poll().
      Signed-off-by: default avatarPhilippe Gerum <rpm@xenomai.org>
      f27fc993
  2. 18 Apr, 2020 1 commit
    • Philippe Gerum's avatar
      lib: introduce element visibility attribute · 9b42b85e
      Philippe Gerum authored
      
      
      Since core ABI 21, users can decide whether a new element should be
      made public or private depending on the value of clone flags added to
      the new long form of all element creation calls, i.e. evl_create_*().
      All evl_new_*() calls become a shorthand for their respective long
      form with reasonable default arguments, including private visibility.
      
      As a shorthand, libevl also interprets a slash character leading the
      name argument passed to these services as an implicit request for
      creating a public element. In other words, this is the same as passing
      EVL_CLONE_PUBLIC in the clone flags.
      
      A public element appears as a cdev in the /dev/evl hierarchy, which
      means that it is visible to other processes, which may share it. On
      the contrary, a private element is only known from the process
      creating it, although it does appear in the /sysfs hierarchy
      regardless.
      
      e.g.:
      
      efd = evl_attach_self("/visible-thread");
      
      total 0
      crw-rw----    1 root     root      248,   1 Apr 17 11:59 clone
      crw-rw----    1 root     root      246,   0 Apr 17 11:59 visible-thread
      
      or,
      
      efd = evl_attach_self("private-thread");
      
      total 0
      crw-rw----    1 root     root      248,   1 Apr 17 11:59 clone
      Signed-off-by: default avatarPhilippe Gerum <rpm@xenomai.org>
      9b42b85e
  3. 28 Mar, 2020 1 commit
  4. 26 Mar, 2020 1 commit
  5. 19 Mar, 2020 1 commit
    • Philippe Gerum's avatar
      lib: y2038: convert to timespec64 kernel interface · 4204f25b
      Philippe Gerum authored
      
      
      This set of changes makes libevl y2038-safe by switching to the ABI
      revision 19 of the EVL core, which generalizes the use of a 64bit
      timespec type. These changes also go a long way preparing for the
      upcoming mixed 32/64 ABI support (aka compat mode).
      
      The changes only affect the internal interface between libevl and the
      kernel, not the API.  Nevertheless, the API was bumped to revision 10
      with the removal of the evl_adjust_clock() service, which neither had
      proper specification nor defined use case currently, but would stand
      in the way of the sanitization work for y2038. At any rate, any future
      service implementing some sort of EVL clock adjustment should
      definitely not depend on the legacy struct timex which is
      y2038-unsafe.
      Signed-off-by: default avatarPhilippe Gerum <rpm@xenomai.org>
      4204f25b
  6. 07 Nov, 2019 1 commit
  7. 19 Aug, 2019 1 commit
    • Philippe Gerum's avatar
      lib/sem: introduce compact creation calls · a7a084ea
      Philippe Gerum authored
      Zero-initialized semaphores timed on the monotonic clock is the
      most common form used by applications. Allow people to write more
      compact code by providing creation calls and static initializers aimed
      at building these directly:
      
      - evl_new_sem(), EVL_SEM_INITIALIZER() for zero-init semaphores
        timed on the monotonic clock.
      
      - evl_new_sem_any() and EVL_SEM_ANY_INITIALIZER() usable for any
        initialization form, specifying the clock and init value.
      a7a084ea
  8. 21 Jul, 2019 1 commit
  9. 24 Jun, 2019 1 commit
  10. 19 Jun, 2019 1 commit
  11. 16 Jun, 2019 1 commit
    • Philippe Gerum's avatar
      lib: normalize return values of evl_new_*(), evl_open_*() calls · 59dd3a15
      Philippe Gerum authored
      Some creation calls have to return the file descriptor of the new
      element because there is no in-memory descriptor associated with the
      latter where we could stick the former. So for consistency, just have
      all evl_new_*() calls return the file descriptor referring to the new
      element.
      
      Likewise, all evl_open_*() calls now do the same.
      59dd3a15
  12. 14 Jun, 2019 1 commit
  13. 13 Jun, 2019 1 commit
  14. 12 Jun, 2019 1 commit
    • Philippe Gerum's avatar
      lib: add support for event flag groups · 8dffaaad
      Philippe Gerum authored
      Event flags are boolean conditions represented by a single bit,
      grouped in 32bit words. All bits from a group are initially set to
      zero.
      
      An event flag group is a lightweight notification mechanism. The
      application can send bitmasks to raise individual bits from the group
      (i.e. group_value |= bits), or wait for the group to have at least one
      bit set for satisfying the request. In the latter case, the group
      value is read then cleared atomically, and the collected bits are
      returned to the thread heading the wait queue.
      8dffaaad
  15. 11 Jun, 2019 1 commit
  16. 28 Mar, 2019 1 commit
  17. 14 Mar, 2019 1 commit
  18. 10 Mar, 2019 1 commit
  19. 08 Mar, 2019 1 commit
  20. 04 Mar, 2019 10 commits