From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pete Zaitcev Subject: [Patch 3/4] libcldc: add cldc_init Date: Sat, 8 Aug 2009 00:28:00 -0600 Message-ID: <20090808002800.087aba2e@redhat.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: Sender: hail-devel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Jeff Garzik Cc: Project Hail List A missing call to srand() was causing us trouble since libcldc relies on rand(). Since rand() is a rather ugly function and we may want to change the implementation later, create a way to initialize the library. Signed-Off-By: Pete Zaitcev diff --git a/include/cldc.h b/include/cldc.h index 491ec36..f625d5e 100644 --- a/include/cldc.h +++ b/include/cldc.h @@ -156,11 +156,11 @@ struct cld_dirent_cur { * @param buflen Length of received packet * @return Zero for success, non-zero on error */ - extern int cldc_receive_pkt(struct cldc_session *sess, const void *net_addr, size_t net_addrlen, const void *buf, size_t buflen); +extern void cldc_init(void); extern int cldc_new_sess(const struct cldc_ops *ops, const struct cldc_call_opts *copts, const void *addr, size_t addr_len, diff --git a/lib/cldc.c b/lib/cldc.c index 420c2be..5cccc63 100644 --- a/lib/cldc.c +++ b/lib/cldc.c @@ -1359,3 +1359,13 @@ char *cldc_dirent_name(struct cld_dirent_cur *dc) return s; } +/* + * For extra safety, call cldc_init after g_thread_init, if present. + * Currently we just call srand(), but since we use GLib, we may need + * to add some Glib stuff here and that must come after g_thread_init. + */ +void cldc_init() +{ + srand(time(NULL) ^ getpid()); // for __cld_rand64 et.al. +} +