cctools
work_queue_internal.h
1 /*
2 Copyright (C) 2008- The University of Notre Dame
3 This software is distributed under the GNU General Public License.
4 See the file COPYING for details.
5 */
6 
7 #include "work_queue.h"
8 #include "work_queue_resources.h"
9 
10 #include "list.h"
11 
12 typedef enum {
13  WORK_QUEUE_FILE = 1,
14  WORK_QUEUE_BUFFER,
15  WORK_QUEUE_REMOTECMD,
16  WORK_QUEUE_FILE_PIECE,
17  WORK_QUEUE_DIRECTORY,
18  WORK_QUEUE_URL
19 } work_queue_file_t;
20 
22  work_queue_file_t type;
23  int flags; // WORK_QUEUE_CACHE or others in the future.
24  int length; // length of payload, only used for non-file objects like buffers and urls
25  off_t offset; // file offset for WORK_QUEUE_FILE_PIECE
26  off_t piece_length; // file piece length for WORK_QUEUE_FILE_PIECE
27  char *payload; // name on master machine or buffer of data.
28  char *remote_name; // name on remote machine.
29  char *cached_name; // name on remote machine in cached directory.
30 };
31 
32 struct work_queue_task *work_queue_wait_internal(struct work_queue *q, int timeout, struct link *foreman_uplink, int *foreman_uplink_active);
33 
34 /* Adds (arithmetically) all the workers resources (cores, memory, disk) */
35 void aggregate_workers_resources( struct work_queue *q, struct work_queue_resources *r );
36 
42 void work_queue_enable_process_module(struct work_queue *q);
43 
48 int work_queue_submit_internal(struct work_queue *q, struct work_queue_task *t);
49 
50 void release_all_workers(struct work_queue *q);
51 
52 void update_catalog(struct work_queue *q, struct link *foreman_uplink, int force_update );
A task description.
Definition: work_queue.h:94
A master-worker library.
Double-linked non-intrusive list.
Definition: work_queue_internal.h:21
Definition: work_queue_resources.h:21