Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
f6145f21dee82272c814326498db95807dedd31c
[simgrid.git] / src / surf / storage_private.h
1 /* Copyright (c) 2009, 2013. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #ifndef STORAGE_PRIVATE_H_
8 #define STORAGE_PRIVATE_H_
9
10 typedef struct s_storage_type {
11   char *model;
12   char *content;
13   char *type_id;
14   xbt_dict_t properties;
15   unsigned long size;
16 } s_storage_type_t, *storage_type_t;
17
18 typedef struct s_mount {
19   void *id;
20   char *name;
21 } s_mount_t, *mount_t;
22
23 typedef struct surf_stat { /* file status structure */
24   s_file_stat_t stat;
25   /* possible additional fields (e.g., popularity, last access time to know whether the file is in cache, ...) */
26 } s_surf_stat_t;
27
28 typedef struct surf_file {
29   char *name;
30   surf_stat_t content;
31   const char* storage;
32 } s_surf_file_t;
33
34 typedef struct storage {
35   s_surf_resource_t generic_resource;   /*< Structure with generic data. Needed at begin to interact with SURF */
36   e_surf_resource_state_t state_current;        /*< STORAGE current state (ON or OFF) */
37   lmm_constraint_t constraint;          /* Constraint for maximum bandwidth from connection */
38   lmm_constraint_t constraint_write;    /* Constraint for maximum write bandwidth*/
39   lmm_constraint_t constraint_read;     /* Constraint for maximum write bandwidth*/
40   xbt_dict_t content; /* char * -> s_surf_stat_t */
41   unsigned long size;
42   unsigned long used_size;
43   xbt_dynar_t write_actions;
44 } s_storage_t, *storage_t;
45
46 typedef enum {
47   READ=0, WRITE, STAT, OPEN, CLOSE, UNLINK, LS
48 } e_surf_action_storage_type_t;
49
50 typedef struct surf_action_storage {
51   s_surf_action_lmm_t generic_lmm_action;
52   e_surf_action_storage_type_t type;
53   void *storage;
54 } s_surf_action_storage_t, *surf_action_storage_t;
55
56 #endif /* STORAGE_PRIVATE_H_ */