Commit Graph

2 Commits

Author SHA1 Message Date
Ewout van Bekkum
830d5d1ac0 pw_chrono: Improve SystemClock C API
Changes the SystemClock C Api to:
1) Use a pw_chrono_SystemClock_Duration struct instead of aliasing
   an int64_t under pw_chrono_SystemClock_TickCount which could
   accidentally permit direct tick usage.
2) Add PW_SYSTEM_CLOCK_{MS,S,MIN,H} and
   PW_SYSTEM_CLOCK_{MS,S,MIN,H}_CEIL to permit C API users to
   create durations which round up to the nearest tick for deadlines
   and timeouts, mirroring std::chrono::ceil.
3) Add PW_SYSTEM_CLOCK_{MS,S,MIN,H}_FLOOR to permit C API users to
   create durations which round down to the nearest tick for oddball
   corner cases, mirroring std::chrono::floor.
4) In order to enable said macros, the system_clock_config.h backend
   config was changed to require the clock period as a preprocessor
   defines instead of a std::ratio<>.
5) Renames pw_chrono_SystemClock_TimeDelta to
   pw_chrono_SystemClock_TimeElapsed to make the argument ordering
   make more sense.
6) Changes existing std::chrono::duration_cast usage to
   std::chrono::ceil and std::chrono:floor to set a good example
   to be explicit on rounding.
7) Renames pw_chrono_SystemClock_TickCountsToNsTruncate accordingly to
   pw_chrono_SystemClock_DurationToNsFloor.

Requires: pigweed-internal:9340
Change-Id: Ia628dceac53f964eda7c4aacd3d790b8b0e92207
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/31280
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
2021-01-30 01:48:08 +00:00
Ewout van Bekkum
e3b5603919 pw_thread: adds the initial pw_thread module
Adds a std::this_thread like API through the pw_thread facades, that
is:
1) this_thread::yield
2) this_thread::sleep_{for,until}
3) this_thread::get_id

This module is split into many different facades in order to let users
decide what functionality they want to use as they may not always
be available, for example when using opaque SDKs.

In addition this provides an initial set of backends based on using
the STL's std::this_thread directly and selects them for the host
target.

Change-Id: I0ee8e4390ba988b2b13e9ee59f976f2333715f1f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/30040
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
2021-01-28 01:47:20 +00:00