From: Kern Sibbald Date: Fri, 21 Jun 2002 20:52:51 +0000 (+0000) Subject: Solaris fixes -- kes21Jun02 X-Git-Tag: Release-1.22~6 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=f18e5878a91cee7839640881ee2f520de00f91a6;p=bacula%2Fbacula Solaris fixes -- kes21Jun02 git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@47 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/autoconf/configure.in b/bacula/autoconf/configure.in index 3986759ad9..1fd35375c5 100644 --- a/bacula/autoconf/configure.in +++ b/bacula/autoconf/configure.in @@ -236,7 +236,7 @@ if test x$support_readline = xyes; then CONS_INC="-I${TOP_DIR}/depkgs" CONS_LIBS="-lreadline -lhistory -ltermcap" CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline" - READLINE_SRC="${TOP_DIR}/depkgs/readline" + PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline" ]) ] ) @@ -1228,7 +1228,7 @@ Configuration on `date`: Working directory ${working_dir} SQL binaries Directory ${SQL_BINDIR} - readline support: ${got_readline} ${READLINE_SRC} + readline support: ${got_readline} ${PRTREADLINE_SRC} cweb support: ${got_cweb} ${CWEB_SRC} TCP Wrappers support: ${TCPW_MSG} ZLIB support: ${have_zlib} diff --git a/bacula/configure b/bacula/configure index 18970ed46e..cc8ee3a18d 100755 --- a/bacula/configure +++ b/bacula/configure @@ -2797,7 +2797,7 @@ EOF CONS_INC="-I${TOP_DIR}/depkgs" CONS_LIBS="-lreadline -lhistory -ltermcap" CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline" - READLINE_SRC="${TOP_DIR}/depkgs/readline" + PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline" fi @@ -9524,7 +9524,7 @@ Configuration on `date`: Working directory ${working_dir} SQL binaries Directory ${SQL_BINDIR} - readline support: ${got_readline} ${READLINE_SRC} + readline support: ${got_readline} ${PRTREADLINE_SRC} cweb support: ${got_cweb} ${CWEB_SRC} TCP Wrappers support: ${TCPW_MSG} ZLIB support: ${have_zlib} diff --git a/bacula/src/baconfig.h b/bacula/src/baconfig.h index b36517f2c3..11261ed7f7 100644 --- a/bacula/src/baconfig.h +++ b/bacula/src/baconfig.h @@ -47,7 +47,8 @@ Emsg1(M_ERROR, 0, "Failed ASSERT: %s\n", #x); \ jcr[0] = 0; } - +/* Allow printing of NULL pointers */ +#define NPRT(x) (x)?(x):"(NULL)" #ifdef ENABLE_NLS #include diff --git a/bacula/src/cats/cats.h b/bacula/src/cats/cats.h index 1dd5f08424..b3946a61e4 100644 --- a/bacula/src/cats/cats.h +++ b/bacula/src/cats/cats.h @@ -94,7 +94,7 @@ typedef struct s_sql_field { typedef struct s_db { BQUEUE bq; /* queue control */ /* pthread_mutex_t mutex; */ - rwlock_t lock; /* transaction lock */ + brwlock_t lock; /* transaction lock */ struct sqlite *db; char **result; int nrow; /* nrow returned from sqlite */ @@ -163,7 +163,7 @@ extern void my_sqlite_free_table(B_DB *mdb); typedef struct s_db { BQUEUE bq; /* queue control */ /* pthread_mutex_t mutex; */ - rwlock_t lock; /* transaction lock */ + brwlock_t lock; /* transaction lock */ MYSQL mysql; MYSQL *db; MYSQL_RES *result; @@ -225,7 +225,7 @@ struct s_control { typedef struct s_db { BQUEUE bq; /* queue control */ /* pthread_mutex_t mutex; */ /* single thread lock */ - rwlock_t lock; /* transaction lock */ + brwlock_t lock; /* transaction lock */ int ref_count; /* number of times opened */ struct s_control control; /* control file structure */ int cfd; /* control file device */ diff --git a/bacula/src/dird/dird_conf.c b/bacula/src/dird/dird_conf.c index b9ea61ae1d..a8087e9a35 100644 --- a/bacula/src/dird/dird_conf.c +++ b/bacula/src/dird/dird_conf.c @@ -425,8 +425,8 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, char *fmt, ... case R_CATALOG: sendit(sock, "Catalog: name=%s address=%s DBport=%d db_name=%s\n\ db_user=%s\n", - res->res_cat.hdr.name, res->res_cat.address, res->res_cat.DBport, - res->res_cat.db_name, res->res_cat.db_user); + res->res_cat.hdr.name, NPRT(res->res_cat.address), + res->res_cat.DBport, res->res_cat.db_name, NPRT(res->res_cat.db_user)); break; case R_JOB: sendit(sock, "Job: name=%s JobType=%d level=%s\n", res->res_job.hdr.name, @@ -550,7 +550,7 @@ next_run: res->res_pool.max_volumes, res->res_pool.AutoPrune, res->res_pool.VolRetention); sendit(sock, " recycle=%d LabelFormat=%s\n", res->res_pool.Recycle, - res->res_pool.label_format?res->res_pool.label_format:"*None*"); + NPRT(res->res_pool.label_format)); break; case R_MSGS: sendit(sock, "Messages: name=%s\n", res->res_msgs.hdr.name); @@ -929,7 +929,9 @@ static void store_backup(LEX *lc, struct res_items *item, int index, int pass) while ((token = lex_get_token(lc, T_ALL)) != T_EOL) { int found; - if (token != T_IDENTIFIER && token != T_STRING && token != T_QUOTED_STRING) { + Dmsg1(150, "store_backup got token=%s\n", lex_tok_to_str(token)); + + if (token != T_IDENTIFIER && token != T_UNQUOTED_STRING && token != T_QUOTED_STRING) { scan_err1(lc, "Expected a backup/verify keyword, got: %s", lc->str); } Dmsg1(190, "Got keyword: %s\n", lc->str); diff --git a/bacula/src/lib/lex.c b/bacula/src/lib/lex.c index 5352934fc5..322181ad4e 100644 --- a/bacula/src/lib/lex.c +++ b/bacula/src/lib/lex.c @@ -38,10 +38,8 @@ void scan_to_eol(LEX *lc) { int token; Dmsg0(150, "start scan to eof\n"); - if (token != T_EOL) { - while ((token = lex_get_token(lc, T_ALL)) != T_EOL) { - } - } + while ((token = lex_get_token(lc, T_ALL)) != T_EOL) + { } Dmsg0(150, "done scan to eof\n"); } diff --git a/bacula/src/lib/message.c b/bacula/src/lib/message.c index 83be2975e9..f46447a0b0 100755 --- a/bacula/src/lib/message.c +++ b/bacula/src/lib/message.c @@ -230,7 +230,7 @@ void add_msg_dest(MSGS *msg, int dest_code, int msg_type, char *where, char *mai if (dest_code == d->dest_code && ((where == NULL && d->where == NULL) || (strcmp(where, d->where) == 0))) { Dmsg4(200, "Add to existing d=%x msgtype=%d destcode=%d where=%s\n", - d, msg_type, dest_code, where); + d, msg_type, dest_code, NPRT(where)); set_bit(msg_type, d->msg_types); set_bit(msg_type, msg->send_msg); /* set msg_type bit in our local */ return; @@ -250,8 +250,7 @@ void add_msg_dest(MSGS *msg, int dest_code, int msg_type, char *where, char *mai d->mail_cmd = bstrdup(mail_cmd); } Dmsg5(200, "add new d=%x msgtype=%d destcode=%d where=%s mailcmd=%s\n", - d, msg_type, dest_code, where?where:"(null)", - d->mail_cmd?d->mail_cmd:"(null)"); + d, msg_type, dest_code, NPRT(where), NPRT(d->mail_cmd)); msg->dest_chain = d; } @@ -265,7 +264,7 @@ void rem_msg_dest(MSGS *msg, int dest_code, int msg_type, char *where) DEST *d; for (d=msg->dest_chain; d; d=d->next) { - Dmsg2(200, "Remove_msg_dest d=%x where=%s\n", d, d->where); + Dmsg2(200, "Remove_msg_dest d=%x where=%s\n", d, NPRT(d->where)); if (bit_is_set(msg_type, d->msg_types) && (dest_code == d->dest_code) && ((where == NULL && d->where == NULL) || (strcmp(where, d->where) == 0))) { diff --git a/bacula/src/lib/rwlock.c b/bacula/src/lib/rwlock.c index 60e45dab34..4ec8b85809 100644 --- a/bacula/src/lib/rwlock.c +++ b/bacula/src/lib/rwlock.c @@ -38,12 +38,12 @@ * Initialize a read/write lock * * Returns: 0 on success - * errno on failure + * errno on failure */ -int rwl_init(rwlock_t *rwl) +int rwl_init(brwlock_t *rwl) { int stat; - + rwl->r_active = rwl->w_active = 0; rwl->r_wait = rwl->w_wait = 0; if ((stat = pthread_mutex_init(&rwl->mutex, NULL)) != 0) { @@ -66,9 +66,9 @@ int rwl_init(rwlock_t *rwl) * Destroy a read/write lock * * Returns: 0 on success - * errno on failure + * errno on failure */ -int rwl_destroy(rwlock_t *rwl) +int rwl_destroy(brwlock_t *rwl) { int stat, stat1, stat2; @@ -99,7 +99,7 @@ int rwl_destroy(rwlock_t *rwl) if ((stat = pthread_mutex_unlock(&rwl->mutex)) != 0) { return stat; } - stat = pthread_mutex_destroy(&rwl->mutex); + stat = pthread_mutex_destroy(&rwl->mutex); stat1 = pthread_cond_destroy(&rwl->read); stat2 = pthread_cond_destroy(&rwl->write); return (stat != 0 ? stat : (stat1 != 0 ? stat1 : stat2)); @@ -111,7 +111,7 @@ int rwl_destroy(rwlock_t *rwl) */ static void rwl_read_release(void *arg) { - rwlock_t *rwl = (rwlock_t *)arg; + brwlock_t *rwl = (brwlock_t *)arg; rwl->r_wait--; pthread_mutex_unlock(&rwl->mutex); @@ -123,7 +123,7 @@ static void rwl_read_release(void *arg) */ static void rwl_write_release(void *arg) { - rwlock_t *rwl = (rwlock_t *)arg; + brwlock_t *rwl = (brwlock_t *)arg; rwl->w_wait--; pthread_mutex_unlock(&rwl->mutex); @@ -132,7 +132,7 @@ static void rwl_write_release(void *arg) /* * Lock for read access, wait until locked (or error). */ -int rwl_readlock(rwlock_t *rwl) +int rwl_readlock(brwlock_t *rwl) { int stat; @@ -143,19 +143,19 @@ int rwl_readlock(rwlock_t *rwl) return stat; } if (rwl->w_active) { - rwl->r_wait++; /* indicate that we are waiting */ + rwl->r_wait++; /* indicate that we are waiting */ pthread_cleanup_push(rwl_read_release, (void *)rwl); while (rwl->w_active) { - stat = pthread_cond_wait(&rwl->read, &rwl->mutex); - if (stat != 0) { - break; /* error, bail out */ - } + stat = pthread_cond_wait(&rwl->read, &rwl->mutex); + if (stat != 0) { + break; /* error, bail out */ + } } pthread_cleanup_pop(0); - rwl->r_wait--; /* we are no longer waiting */ + rwl->r_wait--; /* we are no longer waiting */ } if (stat == 0) { - rwl->r_active++; /* we are running */ + rwl->r_active++; /* we are running */ } pthread_mutex_unlock(&rwl->mutex); return stat; @@ -164,7 +164,7 @@ int rwl_readlock(rwlock_t *rwl) /* * Attempt to lock for read access, don't wait */ -int rwl_readtrylock(rwlock_t *rwl) +int rwl_readtrylock(brwlock_t *rwl) { int stat, stat2; @@ -177,7 +177,7 @@ int rwl_readtrylock(rwlock_t *rwl) if (rwl->w_active) { stat = EBUSY; } else { - rwl->r_active++; /* we are running */ + rwl->r_active++; /* we are running */ } stat2 = pthread_mutex_unlock(&rwl->mutex); return (stat == 0 ? stat2 : stat); @@ -186,7 +186,7 @@ int rwl_readtrylock(rwlock_t *rwl) /* * Unlock read lock */ -int rwl_readunlock(rwlock_t *rwl) +int rwl_readunlock(brwlock_t *rwl) { int stat, stat2; @@ -209,7 +209,7 @@ int rwl_readunlock(rwlock_t *rwl) * Lock for write access, wait until locked (or error). * Multiple nested write locking is permitted. */ -int rwl_writelock(rwlock_t *rwl) +int rwl_writelock(brwlock_t *rwl) { int stat; @@ -225,18 +225,18 @@ int rwl_writelock(rwlock_t *rwl) return 0; } if (rwl->w_active || rwl->r_active > 0) { - rwl->w_wait++; /* indicate that we are waiting */ + rwl->w_wait++; /* indicate that we are waiting */ pthread_cleanup_push(rwl_write_release, (void *)rwl); while (rwl->w_active || rwl->r_active > 0) { - if ((stat = pthread_cond_wait(&rwl->write, &rwl->mutex)) != 0) { - break; /* error, bail out */ - } + if ((stat = pthread_cond_wait(&rwl->write, &rwl->mutex)) != 0) { + break; /* error, bail out */ + } } pthread_cleanup_pop(0); - rwl->w_wait--; /* we are no longer waiting */ + rwl->w_wait--; /* we are no longer waiting */ } if (stat == 0) { - rwl->w_active = 1; /* we are running */ + rwl->w_active = 1; /* we are running */ rwl->writer_id = pthread_self(); /* save writer thread's id */ } pthread_mutex_unlock(&rwl->mutex); @@ -246,7 +246,7 @@ int rwl_writelock(rwlock_t *rwl) /* * Attempt to lock for write access, don't wait */ -int rwl_writetrylock(rwlock_t *rwl) +int rwl_writetrylock(brwlock_t *rwl) { int stat, stat2; @@ -264,7 +264,7 @@ int rwl_writetrylock(rwlock_t *rwl) if (rwl->w_active || rwl->r_active > 0) { stat = EBUSY; } else { - rwl->w_active = 1; /* we are running */ + rwl->w_active = 1; /* we are running */ rwl->writer_id = pthread_self(); /* save writer thread's id */ } stat2 = pthread_mutex_unlock(&rwl->mutex); @@ -275,7 +275,7 @@ int rwl_writetrylock(rwlock_t *rwl) * Unlock write lock * Start any waiting writers in preference to waiting readers */ -int rwl_writeunlock(rwlock_t *rwl) +int rwl_writeunlock(brwlock_t *rwl) { int stat, stat2; @@ -290,13 +290,13 @@ int rwl_writeunlock(rwlock_t *rwl) Emsg0(M_ABORT, 0, "rwl_writeunlock by non-owner.\n"); } if (rwl->w_active > 0) { - stat = 0; /* writers still active */ + stat = 0; /* writers still active */ } else { /* No more writers, awaken someone */ - if (rwl->r_wait > 0) { /* if readers waiting */ - stat = pthread_cond_broadcast(&rwl->read); + if (rwl->r_wait > 0) { /* if readers waiting */ + stat = pthread_cond_broadcast(&rwl->read); } else if (rwl->w_wait > 0) { - stat = pthread_cond_signal(&rwl->write); + stat = pthread_cond_signal(&rwl->write); } } stat2 = pthread_mutex_unlock(&rwl->mutex); @@ -324,7 +324,7 @@ typedef struct thread_tag { * Read/write lock and shared data. */ typedef struct data_tag { - rwlock_t lock; + brwlock_t lock; int data; int writes; } data_t; @@ -350,43 +350,43 @@ void *thread_routine(void *arg) * lock). */ if ((iteration % self->interval) == 0) { - status = rwl_writelock(&data[element].lock); - if (status != 0) { + status = rwl_writelock(&data[element].lock); + if (status != 0) { Emsg1(M_ABORT, 0, "Write lock failed. ERR=%s\n", strerror(status)); - } - data[element].data = self->thread_num; - data[element].writes++; - self->writes++; - status = rwl_writeunlock(&data[element].lock); - if (status != 0) { + } + data[element].data = self->thread_num; + data[element].writes++; + self->writes++; + status = rwl_writeunlock(&data[element].lock); + if (status != 0) { Emsg1(M_ABORT, 0, "Write unlock failed. ERR=%s\n", strerror(status)); - } + } } else { - /* - * Look at the current data element to see whether - * the current thread last updated it. Count the - * times to report later. - */ - status = rwl_readlock(&data[element].lock); - if (status != 0) { + /* + * Look at the current data element to see whether + * the current thread last updated it. Count the + * times to report later. + */ + status = rwl_readlock(&data[element].lock); + if (status != 0) { Emsg1(M_ABORT, 0, "Read lock failed. ERR=%s\n", strerror(status)); - } - self->reads++; - if (data[element].data == self->thread_num) - repeats++; - status = rwl_readunlock(&data[element].lock); - if (status != 0) { + } + self->reads++; + if (data[element].data == self->thread_num) + repeats++; + status = rwl_readunlock(&data[element].lock); + if (status != 0) { Emsg1(M_ABORT, 0, "Read unlock failed. ERR=%s\n", strerror(status)); - } + } } element++; if (element >= DATASIZE) { - element = 0; + element = 0; } } if (repeats > 0) { Dmsg2(000, "Thread %d found unchanged elements %d times\n", - self->thread_num, repeats); + self->thread_num, repeats); } return NULL; } @@ -413,27 +413,27 @@ int main (int argc, char *argv[]) * Initialize the shared data. */ for (data_count = 0; data_count < DATASIZE; data_count++) { - data[data_count].data = 0; - data[data_count].writes = 0; - status = rwl_init (&data[data_count].lock); - if (status != 0) { + data[data_count].data = 0; + data[data_count].writes = 0; + status = rwl_init (&data[data_count].lock); + if (status != 0) { Emsg1(M_ABORT, 0, "Init rwlock failed. ERR=%s\n", strerror(status)); - } + } } /* * Create THREADS threads to access shared data. */ for (count = 0; count < THREADS; count++) { - threads[count].thread_num = count + 1; - threads[count].writes = 0; - threads[count].reads = 0; - threads[count].interval = rand_r (&seed) % 71; - status = pthread_create (&threads[count].thread_id, - NULL, thread_routine, (void*)&threads[count]); - if (status != 0) { + threads[count].thread_num = count + 1; + threads[count].writes = 0; + threads[count].reads = 0; + threads[count].interval = rand_r (&seed) % 71; + status = pthread_create (&threads[count].thread_id, + NULL, thread_routine, (void*)&threads[count]); + if (status != 0) { Emsg1(M_ABORT, 0, "Create thread failed. ERR=%s\n", strerror(status)); - } + } } /* @@ -441,28 +441,28 @@ int main (int argc, char *argv[]) * statistics. */ for (count = 0; count < THREADS; count++) { - status = pthread_join (threads[count].thread_id, NULL); - if (status != 0) { + status = pthread_join (threads[count].thread_id, NULL); + if (status != 0) { Emsg1(M_ABORT, 0, "Join thread failed. ERR=%s\n", strerror(status)); - } - thread_writes += threads[count].writes; + } + thread_writes += threads[count].writes; printf ("%02d: interval %d, writes %d, reads %d\n", - count, threads[count].interval, - threads[count].writes, threads[count].reads); + count, threads[count].interval, + threads[count].writes, threads[count].reads); } /* * Collect statistics for the data. */ for (data_count = 0; data_count < DATASIZE; data_count++) { - data_writes += data[data_count].writes; + data_writes += data[data_count].writes; printf ("data %02d: value %d, %d writes\n", - data_count, data[data_count].data, data[data_count].writes); - rwl_destroy (&data[data_count].lock); + data_count, data[data_count].data, data[data_count].writes); + rwl_destroy (&data[data_count].lock); } printf ("Total: %d thread writes, %d data writes\n", - thread_writes, data_writes); + thread_writes, data_writes); return 0; } @@ -470,7 +470,7 @@ int main (int argc, char *argv[]) #ifdef TEST_RW_TRY_LOCK /* - * rwlock_try_main.c + * brwlock_try_main.c * * Demonstrate use of non-blocking read-write locks. * @@ -482,29 +482,29 @@ int main (int argc, char *argv[]) #include "rwlock.h" #include "errors.h" -#define THREADS 5 -#define ITERATIONS 1000 -#define DATASIZE 15 +#define THREADS 5 +#define ITERATIONS 1000 +#define DATASIZE 15 /* * Keep statistics for each thread. */ typedef struct thread_tag { - int thread_num; - pthread_t thread_id; - int r_collisions; - int w_collisions; - int updates; - int interval; + int thread_num; + pthread_t thread_id; + int r_collisions; + int w_collisions; + int updates; + int interval; } thread_t; /* * Read-write lock and shared data */ typedef struct data_tag { - rwlock_t lock; - int data; - int updates; + brwlock_t lock; + int data; + int updates; } data_t; thread_t threads[THREADS]; @@ -520,38 +520,38 @@ void *thread_routine (void *arg) int element; int status; - element = 0; /* Current data element */ + element = 0; /* Current data element */ for (iteration = 0; iteration < ITERATIONS; iteration++) { - if ((iteration % self->interval) == 0) { - status = rwl_writetrylock (&data[element].lock); - if (status == EBUSY) - self->w_collisions++; - else if (status == 0) { - data[element].data++; - data[element].updates++; - self->updates++; - rwl_writeunlock (&data[element].lock); - } else + if ((iteration % self->interval) == 0) { + status = rwl_writetrylock (&data[element].lock); + if (status == EBUSY) + self->w_collisions++; + else if (status == 0) { + data[element].data++; + data[element].updates++; + self->updates++; + rwl_writeunlock (&data[element].lock); + } else err_abort (status, "Try write lock"); - } else { - status = rwl_readtrylock (&data[element].lock); - if (status == EBUSY) - self->r_collisions++; - else if (status != 0) { + } else { + status = rwl_readtrylock (&data[element].lock); + if (status == EBUSY) + self->r_collisions++; + else if (status != 0) { err_abort (status, "Try read lock"); - } else { - if (data[element].data != data[element].updates) + } else { + if (data[element].data != data[element].updates) printf ("%d: data[%d] %d != %d\n", - self->thread_num, element, - data[element].data, data[element].updates); - rwl_readunlock (&data[element].lock); - } - } - - element++; - if (element >= DATASIZE) - element = 0; + self->thread_num, element, + data[element].data, data[element].updates); + rwl_readunlock (&data[element].lock); + } + } + + element++; + if (element >= DATASIZE) + element = 0; } return NULL; } @@ -577,23 +577,23 @@ int main (int argc, char *argv[]) * Initialize the shared data. */ for (data_count = 0; data_count < DATASIZE; data_count++) { - data[data_count].data = 0; - data[data_count].updates = 0; - rwl_init (&data[data_count].lock); + data[data_count].data = 0; + data[data_count].updates = 0; + rwl_init (&data[data_count].lock); } /* * Create THREADS threads to access shared data. */ for (count = 0; count < THREADS; count++) { - threads[count].thread_num = count; - threads[count].r_collisions = 0; - threads[count].w_collisions = 0; - threads[count].updates = 0; - threads[count].interval = rand_r (&seed) % ITERATIONS; - status = pthread_create (&threads[count].thread_id, - NULL, thread_routine, (void*)&threads[count]); - if (status != 0) + threads[count].thread_num = count; + threads[count].r_collisions = 0; + threads[count].w_collisions = 0; + threads[count].updates = 0; + threads[count].interval = rand_r (&seed) % ITERATIONS; + status = pthread_create (&threads[count].thread_id, + NULL, thread_routine, (void*)&threads[count]); + if (status != 0) err_abort (status, "Create thread"); } @@ -602,25 +602,25 @@ int main (int argc, char *argv[]) * statistics. */ for (count = 0; count < THREADS; count++) { - status = pthread_join (threads[count].thread_id, NULL); - if (status != 0) + status = pthread_join (threads[count].thread_id, NULL); + if (status != 0) err_abort (status, "Join thread"); - thread_updates += threads[count].updates; + thread_updates += threads[count].updates; printf ("%02d: interval %d, updates %d, " "r_collisions %d, w_collisions %d\n", - count, threads[count].interval, - threads[count].updates, - threads[count].r_collisions, threads[count].w_collisions); + count, threads[count].interval, + threads[count].updates, + threads[count].r_collisions, threads[count].w_collisions); } /* * Collect statistics for the data. */ for (data_count = 0; data_count < DATASIZE; data_count++) { - data_updates += data[data_count].updates; + data_updates += data[data_count].updates; printf ("data %02d: value %d, %d updates\n", - data_count, data[data_count].data, data[data_count].updates); - rwl_destroy (&data[data_count].lock); + data_count, data[data_count].data, data[data_count].updates); + rwl_destroy (&data[data_count].lock); } return 0; diff --git a/bacula/src/lib/rwlock.h b/bacula/src/lib/rwlock.h index 79bd96fb9e..6e2a594238 100644 --- a/bacula/src/lib/rwlock.h +++ b/bacula/src/lib/rwlock.h @@ -33,7 +33,7 @@ #ifndef __RWLOCK_H #define __RWLOCK_H 1 -typedef struct rwlock_tag { +typedef struct s_rwlock_tag { pthread_mutex_t mutex; pthread_cond_t read; /* wait for read */ pthread_cond_t write; /* wait for write */ @@ -43,7 +43,7 @@ typedef struct rwlock_tag { int w_active; /* writers active */ int r_wait; /* readers waiting */ int w_wait; /* writers waiting */ -} rwlock_t; +} brwlock_t; #define RWLOCK_VALID 0xfacade @@ -54,13 +54,13 @@ typedef struct rwlock_tag { /* * read/write lock prototypes */ -extern int rwl_init(rwlock_t *wrlock); -extern int rwl_destroy(rwlock_t *rwlock); -extern int rwl_readlock(rwlock_t *rwlock); -extern int rwl_readtrylock(rwlock_t *rwlock); -extern int rwl_readunlock(rwlock_t *rwlock); -extern int rwl_writelock(rwlock_t *rwlock); -extern int rwl_writetrylock(rwlock_t *rwlock); -extern int rwl_writeunlock(rwlock_t *rwlock); +extern int rwl_init(brwlock_t *wrlock); +extern int rwl_destroy(brwlock_t *rwlock); +extern int rwl_readlock(brwlock_t *rwlock); +extern int rwl_readtrylock(brwlock_t *rwlock); +extern int rwl_readunlock(brwlock_t *rwlock); +extern int rwl_writelock(brwlock_t *rwlock); +extern int rwl_writetrylock(brwlock_t *rwlock); +extern int rwl_writeunlock(brwlock_t *rwlock); #endif /* __RWLOCK_H */ diff --git a/bacula/src/lib/signal.c b/bacula/src/lib/signal.c index 26bd5495c9..7550bd6dc6 100644 --- a/bacula/src/lib/signal.c +++ b/bacula/src/lib/signal.c @@ -70,7 +70,7 @@ static void signal_handler(int sig) if (sig == SIGTERM) { Emsg1(M_TERM, -1, "Shutting down Bacula service: %s ...\n", my_name); } else { - Emsg2(M_FATAL, -1, "Interrupted by signal %d: %s\n", sig, sig_names[sig]); + Emsg2(M_FATAL, -1, "Bacula interrupted by signal %d: %s\n", sig, sig_names[sig]); } #ifdef TRACEBACK @@ -94,7 +94,7 @@ static void signal_handler(int sig) Dmsg1(000, "chdir failed. ERR=%s\n", strerror(errno)); } unlink("./core"); /* get rid of any old core file */ - sprintf(pid_buf, "%d", main_pid); + sprintf(pid_buf, "%d", (int)main_pid); Dmsg1(300, "Working=%s\n", working_directory); Dmsg1(300, "btpath=%s\n", btpath); Dmsg1(300, "exepath=%s\n", exepath); diff --git a/bacula/src/version.h b/bacula/src/version.h index f0e78b6b84..68336ee870 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -1,8 +1,8 @@ /* */ #define VERSION "1.22" #define VSTRING "1" -#define DATE "20 June 2002" -#define LSMDATE "20Jun02" +#define DATE "21 June 2002" +#define LSMDATE "21Jun02" /* Debug flags */ #define DEBUG 1