summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/ck_epoch_poll7
-rw-r--r--doc/ck_epoch_register8
-rw-r--r--doc/ck_epoch_synchronize2
-rw-r--r--doc/ck_pr_dec31
-rw-r--r--doc/ck_pr_inc31
5 files changed, 71 insertions, 8 deletions
diff --git a/doc/ck_epoch_poll b/doc/ck_epoch_poll
index 68c4a4e..704b04a 100644
--- a/doc/ck_epoch_poll
+++ b/doc/ck_epoch_poll
@@ -47,10 +47,9 @@ if deemed safe. This function is meant to be used in cases epoch
reclamation cost must be amortized over time in a manner that does
not affect caller progress.
.Sh RETURN VALUES
-This function will return true if at least one function was dispatched.
-This function will return false if it has determined not all threads have
-observed the latest generation of epoch-protected objects. Neither value
-indicates an error.
+This functions returns false if the following conditions are met:
+no memory was reclaimed, the records are not in a grace period and no forward
+progress was made.
.Sh ERRORS
Behavior is undefined if the object pointed to by
.Fa record
diff --git a/doc/ck_epoch_register b/doc/ck_epoch_register
index 85ea461..90055d9 100644
--- a/doc/ck_epoch_register
+++ b/doc/ck_epoch_register
@@ -34,7 +34,7 @@ Concurrency Kit (libck, \-lck)
.Sh SYNOPSIS
.In ck_epoch.h
.Ft void
-.Fn ck_epoch_register "ck_epoch_t *epoch" "ck_epoch_record_t *record"
+.Fn ck_epoch_register "ck_epoch_t *epoch" "ck_epoch_record_t *record" "void *cl"
.Sh DESCRIPTION
The
.Fn ck_epoch_register 3
@@ -49,7 +49,11 @@ object pointed to by the
argument will have lifetime managed by the underlying epoch sub-system.
The record object must not be destroyed after it is associated with a
.Fn ck_epoch_register 3
-call.
+call. An optional context pointer
+.Fa cl
+may be passed that is retrievable with the
+.Fn ck_epoch_record_ct 3
+function.
.Sh RETURN VALUES
This function has no return value.
.Sh SEE ALSO
diff --git a/doc/ck_epoch_synchronize b/doc/ck_epoch_synchronize
index 6c9a698..6e5f73d 100644
--- a/doc/ck_epoch_synchronize
+++ b/doc/ck_epoch_synchronize
@@ -40,6 +40,8 @@ The
.Fn ck_epoch_synchronize 3
function will block the caller until a grace period has been
detected, according to the semantics of epoch reclamation.
+It is not safe to call this function on a record that is
+in an active section.
Any objects requiring safe memory reclamation which are logically
deleted are safe for physical deletion following a call to
.Fn ck_epoch_synchronize 3 .
diff --git a/doc/ck_pr_dec b/doc/ck_pr_dec
index f3d34dd..b33ec19 100644
--- a/doc/ck_pr_dec
+++ b/doc/ck_pr_dec
@@ -29,22 +29,31 @@
.Sh NAME
.Nm ck_pr_dec_ptr ,
.Nm ck_pr_dec_ptr_zero ,
+.Nm ck_pr_dec_ptr_is_zero ,
.Nm ck_pr_dec_double ,
.Nm ck_pr_dec_double_zero ,
+.Nm ck_pr_dec_double_is_zero ,
.Nm ck_pr_dec_char ,
.Nm ck_pr_dec_char_zero ,
+.Nm ck_pr_dec_char_is_zero ,
.Nm ck_pr_dec_uint ,
.Nm ck_pr_dec_uint_zero ,
+.Nm ck_pr_dec_char_is_zero ,
.Nm ck_pr_dec_int ,
.Nm ck_pr_dec_int_zero ,
+.Nm ck_pr_dec_int_is_zero ,
.Nm ck_pr_dec_64 ,
.Nm ck_pr_dec_64_zero ,
+.Nm ck_pr_dec_64_is_zero ,
.Nm ck_pr_dec_32 ,
.Nm ck_pr_dec_32_zero ,
+.Nm ck_pr_dec_32_is_zero ,
.Nm ck_pr_dec_16 ,
.Nm ck_pr_dec_16_zero ,
+.Nm ck_pr_dec_32_is_zero ,
.Nm ck_pr_dec_8 ,
-.Nm ck_pr_dec_8_zero
+.Nm ck_pr_dec_8_zero ,
+.Nm ck_pr_dec_8_is_zero
.Nd atomic decrement operations
.Sh LIBRARY
Concurrency Kit (libck, \-lck)
@@ -54,38 +63,56 @@ Concurrency Kit (libck, \-lck)
.Fn ck_pr_dec_ptr "void *target"
.Ft void
.Fn ck_pr_dec_ptr_zero "void *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_ptr_is_zero "void *target"
.Ft void
.Fn ck_pr_dec_double "double *target"
.Ft void
.Fn ck_pr_dec_double_zero "double *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_double_is_zero "double *target"
.Ft void
.Fn ck_pr_dec_char "char *target"
.Ft void
.Fn ck_pr_dec_char_zero "char *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_char_is_zero "char *target"
.Ft void
.Fn ck_pr_dec_uint "unsigned int *target"
.Ft void
.Fn ck_pr_dec_uint_zero "unsigned int *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_uint_is_zero "unsigned int *target"
.Ft void
.Fn ck_pr_dec_int "int *target"
.Ft void
.Fn ck_pr_dec_int_zero "int *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_int_is_zero "int *target"
.Ft void
.Fn ck_pr_dec_64 "uint64_t *target"
.Ft void
.Fn ck_pr_dec_64_zero "uint64_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_64_is_zero "uint64_t *target"
.Ft void
.Fn ck_pr_dec_32 "uint32_t *target"
.Ft void
.Fn ck_pr_dec_32_zero "uint32_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_32_is_zero "uint32_t *target"
.Ft void
.Fn ck_pr_dec_16 "uint16_t *target"
.Ft void
.Fn ck_pr_dec_16_zero "uint16_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_16_is_zero "uint16_t *target"
.Ft void
.Fn ck_pr_dec_8 "uint8_t *target"
.Ft void
.Fn ck_pr_dec_8_zero "uint8_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_dec_8_is_zero "uint8_t *target"
.Sh DESCRIPTION
The
.Fn ck_pr_dec 3
@@ -99,6 +126,8 @@ to true if the result
of the decrement operation was 0. They set the value pointed to by
.Fa z
to false otherwise.
+The ck_pr_dec_is_zero family of function return true if the result
+of the decrement operation was 0 and false otherwise.
.Sh SEE ALSO
.Xr ck_pr_fence_load 3 ,
.Xr ck_pr_fence_load_depends 3 ,
diff --git a/doc/ck_pr_inc b/doc/ck_pr_inc
index 72a3e70..337e488 100644
--- a/doc/ck_pr_inc
+++ b/doc/ck_pr_inc
@@ -29,22 +29,31 @@
.Sh NAME
.Nm ck_pr_inc_ptr ,
.Nm ck_pr_inc_ptr_zero ,
+.Nm ck_pr_inc_ptr_is_zero ,
.Nm ck_pr_inc_double ,
.Nm ck_pr_inc_double_zero ,
+.Nm ck_pr_inc_double_is_zero ,
.Nm ck_pr_inc_char ,
.Nm ck_pr_inc_char_zero ,
+.Nm ck_pr_inc_char_is_zero ,
.Nm ck_pr_inc_uint ,
.Nm ck_pr_inc_uint_zero ,
+.Nm ck_pr_inc_uint_is_zero ,
.Nm ck_pr_inc_int ,
.Nm ck_pr_inc_int_zero ,
+.Nm ck_pr_inc_int_is_zero ,
.Nm ck_pr_inc_64 ,
.Nm ck_pr_inc_64_zero ,
+.Nm ck_pr_inc_64_is_zero ,
.Nm ck_pr_inc_32 ,
.Nm ck_pr_inc_32_zero ,
+.Nm ck_pr_inc_32_is_zero ,
.Nm ck_pr_inc_16 ,
.Nm ck_pr_inc_16_zero ,
+.Nm ck_pr_inc_16_is_zero ,
.Nm ck_pr_inc_8 ,
-.Nm ck_pr_inc_8_zero
+.Nm ck_pr_inc_8_zero ,
+.Nm ck_pr_inc_8_is_zero
.Nd atomic increment operations
.Sh LIBRARY
Concurrency Kit (libck, \-lck)
@@ -54,38 +63,56 @@ Concurrency Kit (libck, \-lck)
.Fn ck_pr_inc_ptr "void *target"
.Ft void
.Fn ck_pr_inc_ptr_zero "void *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_ptr_is_zero "void *target"
.Ft void
.Fn ck_pr_inc_double "double *target"
.Ft void
.Fn ck_pr_inc_double_zero "double *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_double_is_zero "double *target"
.Ft void
.Fn ck_pr_inc_char "char *target"
.Ft void
.Fn ck_pr_inc_char_zero "char *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_char_is_zero "char *target"
.Ft void
.Fn ck_pr_inc_uint "unsigned int *target"
.Ft void
.Fn ck_pr_inc_uint_zero "unsigned int *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_uint_is_zero "unsigned int *target"
.Ft void
.Fn ck_pr_inc_int "int *target"
.Ft void
.Fn ck_pr_inc_int_zero "int *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_int_is_zero "int *target"
.Ft void
.Fn ck_pr_inc_64 "uint64_t *target"
.Ft void
.Fn ck_pr_inc_64_zero "uint64_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_64_is_zero "uint64_t *target"
.Ft void
.Fn ck_pr_inc_32 "uint32_t *target"
.Ft void
.Fn ck_pr_inc_32_zero "uint32_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_32_is_zero "uint32_t *target"
.Ft void
.Fn ck_pr_inc_16 "uint16_t *target"
.Ft void
.Fn ck_pr_inc_16_zero "uint16_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_16_is_zero "uint16_t *target"
.Ft void
.Fn ck_pr_inc_8 "uint8_t *target"
.Ft void
.Fn ck_pr_inc_8_zero "uint8_t *target" "bool *z"
+.Ft bool
+.Fn ck_pr_inc_8_is_zero "uint8_t *target"
.Sh DESCRIPTION
The
.Fn ck_pr_inc 3
@@ -99,6 +126,8 @@ to true if the result of the increment operation was 0. The functions set
the value pointed to by
.Fa z
false otherwise.
+The ck_pr_inc_is_zero family of function return true if the result
+of the decrement operation was 0 and false otherwise.
.Sh SEE ALSO
.Xr ck_pr_fence_load 3 ,
.Xr ck_pr_fence_load_depends 3 ,