]> git.saurik.com Git - redis.git/blobdiff - src/bio.c
typo fixed in bio.c
[redis.git] / src / bio.c
index fc85afd80d359222cefbbcf4f9e84dcf3334a631..b525afb762377bd23d0f7e4f7898fa8e21b1f920 100644 (file)
--- a/src/bio.c
+++ b/src/bio.c
@@ -33,23 +33,27 @@ list *bio_jobs;
 struct bio_job {
     int type;       /* Job type, for instance BIO_JOB_CLOSE */
     void *data;     /* Job specific arguments pointer. */
-}
+};
 
 void *bioProcessBackgroundJobs(void *arg);
 
+/* Make sure we have enough stack to perform all the things we do in the
+ * main thread. */
+#define REDIS_THREAD_STACK_SIZE (1024*1024*4)
+
 /* Initialize the background system, spawning the thread. */
 void bioInit(void) {
     pthread_attr_t attr;
     pthread_t thread;
     size_t stacksize;
 
-    pthread_mutex_init(bio_mutex,NULL);
-    pthread_cond_init(bio_condvar,NULL);
+    pthread_mutex_init(&bio_mutex,NULL);
+    pthread_cond_init(&bio_condvar,NULL);
     bio_jobs = listCreate();
 
     /* Set the stack size as by default it may be small in some system */
     pthread_attr_init(&attr);
-    pthread_attr_getstacksize(&attr);
+    pthread_attr_getstacksize(&attr,&stacksize);
     if (!stacksize) stacksize = 1; /* The world is full of Solaris Fixes */
     while (stacksize < REDIS_THREAD_STACK_SIZE) stacksize *= 2;
     pthread_attr_setstacksize(&attr, stacksize);
@@ -73,6 +77,7 @@ void bioCreateBackgroundJob(int type, void *data) {
 
 void *bioProcessBackgroundJobs(void *arg) {
     struct bio_job *job;
+    REDIS_NOTUSED(arg);
 
     pthread_detach(pthread_self());
     pthread_mutex_lock(&bio_mutex);
@@ -80,7 +85,7 @@ void *bioProcessBackgroundJobs(void *arg) {
         listNode *ln;
 
         /* The loop always starts with the lock hold. */
-        if (listLength(server.io_newjobs) == 0) {
+        if (listLength(bio_jobs) == 0) {
             pthread_cond_wait(&bio_condvar,&bio_mutex);
             continue;
         }
@@ -94,6 +99,7 @@ void *bioProcessBackgroundJobs(void *arg) {
 
         /* Process the job accordingly to its type. */
         if (job->type == REDIS_BIO_CLOSE_FILE) {
+            printf("Closing file...\n");
             close((long)job->data);
         } else {
             redisPanic("Wrong job type in bioProcessBackgroundJobs().");