diff options
| author | Anand Avati <avati@redhat.com> | 2013-03-15 11:20:53 -0700 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-08-28 15:52:24 -0700 | 
| commit | bbcdbd8c36c7756f39bb7464cd1c69b67e66cfaa (patch) | |
| tree | 5732f6f8dac5b6716ccbd2fbd4e16d5851f08013 /libglusterfs/src/syncop.h | |
| parent | faef08b7cf84ca9e68437abacad12133ef7569be (diff) | |
synctask: minor enhancements
- Enhance syncenv_new() to accept scaling parameters of syncproc.
  Previously the scaling parameters were hardcoded and decided at
  compile time.
- New API synctask_create() which returns the created synctask. This
  is similar to synctask_new which only returned the status of whether
  a synctask could be created or not.
  The meaning of NULL cbk in synctask_create() means the task is
  "joinable". Until synctask_join() is called on such a synctask,
  the task is not reaped and resources are not destroyed. The
  task would be in a zombie state after synctask_fn returns and
  before synctask_join() is called.
Change-Id: I368ec9037de9510d2ba951f0aad86aaf18d9a6b6
BUG: 986775
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5365
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Diffstat (limited to 'libglusterfs/src/syncop.h')
| -rw-r--r-- | libglusterfs/src/syncop.h | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/libglusterfs/src/syncop.h b/libglusterfs/src/syncop.h index c4b339ee7ba..64350030e56 100644 --- a/libglusterfs/src/syncop.h +++ b/libglusterfs/src/syncop.h @@ -41,6 +41,7 @@ typedef enum {          SYNCTASK_SUSPEND,          SYNCTASK_WAIT,          SYNCTASK_DONE, +	SYNCTASK_ZOMBIE,  } synctask_state_t;  /* for one sequential execution of @syncfn */ @@ -90,6 +91,9 @@ struct syncenv {          struct list_head    waitq;          int                 waitcount; +	int                 procmin; +	int                 procmax; +          pthread_mutex_t     mutex;          pthread_cond_t      cond; @@ -219,11 +223,14 @@ struct syncargs {  #define SYNCENV_DEFAULT_STACKSIZE (2 * 1024 * 1024) -struct syncenv * syncenv_new (); +struct syncenv * syncenv_new (size_t stacksize, int procmin, int procmax);  void syncenv_destroy (struct syncenv *);  void syncenv_scale (struct syncenv *env);  int synctask_new (struct syncenv *, synctask_fn_t, synctask_cbk_t, call_frame_t* frame, void *); +struct synctask *synctask_create (struct syncenv *, synctask_fn_t, +				  synctask_cbk_t, call_frame_t *, void *); +int synctask_join (struct synctask *task);  void synctask_wake (struct synctask *task);  void synctask_yield (struct synctask *task);  void synctask_waitfor (struct synctask *task, int count);  | 
