summaryrefslogtreecommitdiff
path: root/usr/src/lib/libpicltree/picltree.c
diff options
context:
space:
mode:
authoranbui <none@none>2007-12-11 14:33:12 -0800
committeranbui <none@none>2007-12-11 14:33:12 -0800
commitcec46d775eb90ec3bcda95b59e0c3e8aa9206b22 (patch)
treef82364f96d7b4154861b2840a089e358b311c66a /usr/src/lib/libpicltree/picltree.c
parent10f9768d1f72c3a57985d93fe30d63aab7749e19 (diff)
downloadillumos-joyent-cec46d775eb90ec3bcda95b59e0c3e8aa9206b22.tar.gz
6547920 picl_wait(3PICL) incorrectly documents the value for no timeout
Diffstat (limited to 'usr/src/lib/libpicltree/picltree.c')
-rw-r--r--usr/src/lib/libpicltree/picltree.c46
1 files changed, 25 insertions, 21 deletions
diff --git a/usr/src/lib/libpicltree/picltree.c b/usr/src/lib/libpicltree/picltree.c
index d79ae48082..a62c1caf72 100644
--- a/usr/src/lib/libpicltree/picltree.c
+++ b/usr/src/lib/libpicltree/picltree.c
@@ -1318,7 +1318,7 @@ ptree_create_prop(const ptree_propinfo_t *pinfo, const void *valbuf,
return (err);
} else if ((strcmp(pinfo->piclinfo.name, PICL_PROP_CLASSNAME) == 0) &&
((pinfo->piclinfo.type != PICL_PTYPE_CHARSTRING) ||
- (strlen(valbuf) >= PICL_CLASSNAMELEN_MAX)))
+ (strlen(valbuf) >= PICL_CLASSNAMELEN_MAX)))
return (PICL_RESERVEDNAME);
else if ((strcmp(pinfo->piclinfo.name, PICL_PROP_NAME) == 0) &&
(pinfo->piclinfo.type != PICL_PTYPE_CHARSTRING))
@@ -2831,8 +2831,8 @@ get_child_by_path(picl_nodehdl_t rooth, char *prl,
for (err = ptree_get_propval_by_name(rooth, PICL_PROP_CHILD, &chdh,
sizeof (picl_nodehdl_t)); err != PICL_PROPNOTFOUND;
- err = ptree_get_propval_by_name(chdh, PICL_PROP_PEER, &chdh,
- sizeof (picl_nodehdl_t))) {
+ err = ptree_get_propval_by_name(chdh, PICL_PROP_PEER, &chdh,
+ sizeof (picl_nodehdl_t))) {
if (err != PICL_SUCCESS) {
free_list(plist);
return (PICL_FAILURE);
@@ -2860,8 +2860,8 @@ get_child_by_path(picl_nodehdl_t rooth, char *prl,
if ((ptree_get_propval_by_name(chdh, PICL_PROP_BUS_ADDR,
busval, (strlen(baddr) + 1)) != PICL_SUCCESS) &&
(ptree_get_propval_by_name(chdh,
- PICL_PROP_UNIT_ADDRESS, busval,
- (strlen(baddr) + 1)) != PICL_SUCCESS))
+ PICL_PROP_UNIT_ADDRESS, busval,
+ (strlen(baddr) + 1)) != PICL_SUCCESS))
continue;
if (strcmp(busval, baddr) != 0)
@@ -3639,26 +3639,30 @@ xptree_refresh_notify(uint32_t secs)
int ret;
timespec_t to;
- if (pthread_mutex_lock(&ptree_refresh_mutex) != 0)
- return (PICL_FAILURE);
-
- curgen = ptree_generation;
+ if (secs != 0) {
+ if (pthread_mutex_lock(&ptree_refresh_mutex) != 0)
+ return (PICL_FAILURE);
- while (curgen == ptree_generation) {
- if (secs == 0) /* wait forever */
- (void) pthread_cond_wait(&ptree_refresh_cond,
- &ptree_refresh_mutex);
- else {
- to.tv_sec = secs;
- to.tv_nsec = 0;
- ret = pthread_cond_reltimedwait_np(&ptree_refresh_cond,
- &ptree_refresh_mutex, &to);
- if (ret == ETIMEDOUT)
- break;
+ curgen = ptree_generation;
+
+ while (curgen == ptree_generation) {
+ if (secs == -1) /* wait forever */
+ (void) pthread_cond_wait(&ptree_refresh_cond,
+ &ptree_refresh_mutex);
+ else {
+ to.tv_sec = secs;
+ to.tv_nsec = 0;
+ ret = pthread_cond_reltimedwait_np(
+ &ptree_refresh_cond,
+ &ptree_refresh_mutex, &to);
+ if (ret == ETIMEDOUT)
+ break;
+ }
}
+
+ (void) pthread_mutex_unlock(&ptree_refresh_mutex);
}
- (void) pthread_mutex_unlock(&ptree_refresh_mutex);
return (PICL_SUCCESS);
}