Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SWIFT
SWIFTsim
Commits
d45fbc71
Commit
d45fbc71
authored
May 27, 2018
by
lhausamm
Committed by
Loic Hausammann
Oct 31, 2018
Browse files
Start cleaning global variable in logger
parent
bdb39745
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/logger.c
View file @
d45fbc71
...
...
@@ -43,7 +43,7 @@
char
LOGGER_VERSION
[
LOGGER_VERSION_SIZE
]
=
"0.1"
;
const
unsigned
int
logger_data_size
[
logger_data_count
]
=
{
const
unsigned
int
logger_data
type
_size
[
logger_data_count
]
=
{
sizeof
(
int
),
sizeof
(
float
),
sizeof
(
double
),
...
...
@@ -63,12 +63,12 @@ const unsigned int logger_data_size[logger_data_count] = {
* @return updated buff
*/
char
*
logger_write_chunk_header
(
char
*
buff
,
const
unsigned
int
*
mask
,
const
size_t
*
offset
,
const
size_t
offset_new
)
{
memcpy
(
buff
,
mask
,
logger_
size_mask
);
buff
+=
logger_
size_mask
;
memcpy
(
buff
,
mask
,
logger_
mask_size
);
buff
+=
logger_
mask_size
;
size_t
diff_offset
=
offset_new
-
*
offset
;
memcpy
(
buff
,
&
diff_offset
,
logger_
size_
offset
);
buff
+=
logger_
size_
offset
;
memcpy
(
buff
,
&
diff_offset
,
logger_offset
_size
);
buff
+=
logger_offset
_size
;
return
buff
;
}
...
...
@@ -93,19 +93,19 @@ void logger_write_data(struct dump *d, size_t *offset, const size_t size, void *
* write data in the following order: name, data type, data
*
* @param d #dump file
* @param log #logger_
const
file format informations
* @param log #logger_
parameters
file format informations
* @param offset offset at which to write (moved by the data size)
* @param p pointer to the data
* @param name data name (should be smaller than log->name)
* @param data_type #logger_datatype to write
*/
void
logger_write_general_data
(
struct
dump
*
d
,
struct
logger_
const
*
log
,
size_t
*
offset
,
void
logger_write_general_data
(
struct
dump
*
d
,
struct
logger_
parameters
*
params
,
size_t
*
offset
,
const
void
*
p
,
char
*
name
,
size_t
data_type
)
{
char
*
buff
;
/* write name */
buff
=
dump_get
(
d
,
log
->
name
,
offset
);
memcpy
(
buff
,
name
,
log
->
name
);
buff
=
dump_get
(
d
,
params
->
name
,
offset
);
memcpy
(
buff
,
name
,
params
->
name
);
/* write data type */
buff
=
dump_get
(
d
,
LOGGER_DATATYPE_SIZE
,
offset
);
...
...
@@ -372,15 +372,15 @@ void logger_ensure_size(
struct
logger
*
log
,
size_t
total_nr_parts
,
size_t
total_nr_gparts
,
size_t
total_nr_sparts
)
{
size_t
limit
,
i
;
struct
logger_
const
log_const
;
logger_
const
_init
(
&
log_
const
);
struct
logger_
parameters
log_params
;
logger_
parameters
_init
(
&
log_
params
);
limit
=
log_
const
.
offset
+
log_
const
.
mask
;
limit
=
log_
params
.
offset
+
log_
params
.
mask
;
for
(
i
=
0
;
i
<
log_
const
.
nber_mask
;
i
++
)
{
if
(
log_
const
.
masks
[
i
]
!=
logger_mask_timestamp
)
limit
+=
log_
const
.
masks_size
[
i
];
for
(
i
=
0
;
i
<
log_
params
.
nber_mask
;
i
++
)
{
if
(
log_
params
.
masks
[
i
]
!=
logger_mask_timestamp
)
limit
+=
log_
params
.
masks_size
[
i
];
}
limit
*=
total_nr_parts
;
...
...
@@ -393,7 +393,7 @@ void logger_ensure_size(
if
(
total_nr_sparts
>
0
)
error
(
"Not implemented"
);
logger_
const
_free
(
&
log_
const
);
logger_
parameters
_free
(
&
log_
params
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
}
...
...
@@ -451,51 +451,51 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
char
*
skip_header
;
size_t
file_offset
;
struct
logger_
const
log_const
;
struct
logger_
parameters
log_params
;
struct
dump
*
dump
=
log
->
dump
;
logger_
const
_init
(
&
log_
const
);
logger_
parameters
_init
(
&
log_
params
);
file_offset
=
dump
->
file_offset
;
if
(
file_offset
!=
0
)
error
(
"Something was already written in the dump file"
);
/* Write version information */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_VERSION_SIZE
,
&
LOGGER_VERSION
);
logger_write_data
(
dump
,
&
file_offset
,
logger_string_size
,
&
logger_version
);
/* write number of bytes used for the offsets */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_OFFSET_SIZE
,
&
log_
const
.
offset
);
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_
params
.
offset
);
/* write offset direction */
int
reversed
=
0
;
logger_write_data
(
dump
,
&
file_offset
,
logger_data_size
[
logger_data_bool
],
&
reversed
);
/* will write the offset of the first particle here */
skip_header
=
dump_get
(
dump
,
log_
const
.
offset
,
&
file_offset
);
skip_header
=
dump_get
(
dump
,
log_
params
.
offset
,
&
file_offset
);
/* write number of bytes used for names */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NAME_SIZE
,
&
log_
const
.
name
);
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NAME_SIZE
,
&
log_
params
.
name
);
/* write number of bytes used for numbers */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NBER_SIZE
,
&
log_
const
.
number
);
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NBER_SIZE
,
&
log_
params
.
number
);
/* write number of bytes used for masks */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_MASK_SIZE
,
&
log_
const
.
mask
);
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_MASK_SIZE
,
&
log_
params
.
mask
);
/* write number of masks */
logger_write_data
(
dump
,
&
file_offset
,
log_
const
.
number
,
&
log_
const
.
nber_mask
);
logger_write_data
(
dump
,
&
file_offset
,
log_
params
.
number
,
&
log_
params
.
nber_mask
);
/* write masks */
// loop over all mask type
for
(
i
=
0
;
i
<
log_
const
.
nber_mask
;
i
++
)
{
for
(
i
=
0
;
i
<
log_
params
.
nber_mask
;
i
++
)
{
// mask name
size_t
j
=
i
*
log_
const
.
name
;
logger_write_data
(
dump
,
&
file_offset
,
log_
const
.
name
,
&
log_
const
.
masks_name
[
j
]);
size_t
j
=
i
*
log_
params
.
name
;
logger_write_data
(
dump
,
&
file_offset
,
log_
params
.
name
,
&
log_
params
.
masks_name
[
j
]);
// mask
logger_write_data
(
dump
,
&
file_offset
,
log_
const
.
mask
,
&
log_
const
.
masks
[
i
]);
logger_write_data
(
dump
,
&
file_offset
,
log_
params
.
mask
,
&
log_
params
.
masks
[
i
]);
// mask size
logger_write_data
(
dump
,
&
file_offset
,
log_
const
.
number
,
&
log_
const
.
masks_size
[
i
]);
logger_write_data
(
dump
,
&
file_offset
,
log_
params
.
number
,
&
log_
params
.
masks_size
[
i
]);
}
/* write mask data */
...
...
@@ -505,16 +505,16 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
/* write data name (mass, id, ...) */
/* Write data */
char
*
name
=
malloc
(
sizeof
(
char
)
*
log_
const
.
name
);
char
*
name
=
malloc
(
sizeof
(
char
)
*
log_
params
.
name
);
strcpy
(
name
,
"time_base"
);
logger_write_general_data
(
dump
,
&
log_
const
,
&
file_offset
,
&
e
->
time_base
,
logger_write_general_data
(
dump
,
&
log_
params
,
&
file_offset
,
&
e
->
time_base
,
name
,
logger_data_double
);
/* last step: write first offset */
memcpy
(
skip_header
,
&
file_offset
,
log_
const
.
offset
);
memcpy
(
skip_header
,
&
file_offset
,
log_
params
.
offset
);
/* free memory */
logger_
const
_free
(
&
log_
const
);
logger_
parameters
_free
(
&
log_
params
);
free
(
name
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
...
...
@@ -522,93 +522,93 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
}
/**
* @brief initialize the #logger_
const
with the format informations
* @brief initialize the #logger_
parameters
with the format informations
*
* @param log_
const
#logger_
const
to initialize
* @param log_
params
#logger_
parameters
to initialize
*/
void
logger_
const
_init
(
struct
logger_
const
*
log_const
)
{
log_
const
->
name
=
20
;
log_
const
->
offset
=
7
;
log_
const
->
mask
=
1
;
log_
const
->
number
=
1
;
void
logger_
parameters
_init
(
struct
logger_
parameters
*
log_params
)
{
log_
params
->
name
=
20
;
log_
params
->
offset
=
7
;
log_
params
->
mask
=
1
;
log_
params
->
number
=
1
;
log_
const
->
nber_mask
=
8
;
log_
params
->
nber_mask
=
8
;
char
*
cur_name
;
char
tmp
[
log_
const
->
name
];
char
tmp
[
log_
params
->
name
];
size_t
block_size
;
// masks value
log_
const
->
masks
=
malloc
(
sizeof
(
size_t
)
*
log_
const
->
nber_mask
);
log_
const
->
masks
[
0
]
=
logger_mask_x
;
log_
const
->
masks
[
1
]
=
logger_mask_v
;
log_
const
->
masks
[
2
]
=
logger_mask_a
;
log_
const
->
masks
[
3
]
=
logger_mask_u
;
log_
const
->
masks
[
4
]
=
logger_mask_h
;
log_
const
->
masks
[
5
]
=
logger_mask_rho
;
log_
const
->
masks
[
6
]
=
logger_mask_consts
;
log_
const
->
masks
[
7
]
=
logger_mask_timestamp
;
log_
params
->
masks
=
malloc
(
sizeof
(
size_t
)
*
log_
params
->
nber_mask
);
log_
params
->
masks
[
0
]
=
logger_mask_x
;
log_
params
->
masks
[
1
]
=
logger_mask_v
;
log_
params
->
masks
[
2
]
=
logger_mask_a
;
log_
params
->
masks
[
3
]
=
logger_mask_u
;
log_
params
->
masks
[
4
]
=
logger_mask_h
;
log_
params
->
masks
[
5
]
=
logger_mask_rho
;
log_
params
->
masks
[
6
]
=
logger_mask_consts
;
log_
params
->
masks
[
7
]
=
logger_mask_timestamp
;
// masks name
block_size
=
log_
const
->
name
*
log_
const
->
nber_mask
;
log_
const
->
masks_name
=
malloc
(
block_size
);
cur_name
=
log_
const
->
masks_name
;
block_size
=
log_
params
->
name
*
log_
params
->
nber_mask
;
log_
params
->
masks_name
=
malloc
(
block_size
);
cur_name
=
log_
params
->
masks_name
;
strcpy
(
tmp
,
"position"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"velocity"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"acceleration"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"entropy"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"cutoff radius"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"density"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"consts"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
strcpy
(
tmp
,
"timestamp"
);
memcpy
(
cur_name
,
&
tmp
,
log_
const
->
name
);
cur_name
+=
log_
const
->
name
;
log_
const
->
masks_size
=
malloc
(
sizeof
(
size_t
)
*
log_
const
->
nber_mask
);
log_
const
->
masks_size
[
0
]
=
3
*
sizeof
(
double
);
log_
const
->
masks_size
[
1
]
=
3
*
sizeof
(
float
);
log_
const
->
masks_size
[
2
]
=
3
*
sizeof
(
float
);
log_
const
->
masks_size
[
3
]
=
sizeof
(
float
);
log_
const
->
masks_size
[
4
]
=
sizeof
(
float
);
log_
const
->
masks_size
[
5
]
=
sizeof
(
float
);
log_
const
->
masks_size
[
6
]
=
sizeof
(
float
)
+
sizeof
(
long
long
);
log_
const
->
masks_size
[
7
]
=
sizeof
(
integertime_t
);
memcpy
(
cur_name
,
&
tmp
,
log_
params
->
name
);
cur_name
+=
log_
params
->
name
;
log_
params
->
masks_size
=
malloc
(
sizeof
(
size_t
)
*
log_
params
->
nber_mask
);
log_
params
->
masks_size
[
0
]
=
3
*
sizeof
(
double
);
log_
params
->
masks_size
[
1
]
=
3
*
sizeof
(
float
);
log_
params
->
masks_size
[
2
]
=
3
*
sizeof
(
float
);
log_
params
->
masks_size
[
3
]
=
sizeof
(
float
);
log_
params
->
masks_size
[
4
]
=
sizeof
(
float
);
log_
params
->
masks_size
[
5
]
=
sizeof
(
float
);
log_
params
->
masks_size
[
6
]
=
sizeof
(
float
)
+
sizeof
(
long
long
);
log_
params
->
masks_size
[
7
]
=
sizeof
(
integertime_t
);
// todo masks_type
}
/**
* @brief free the memory allocated when initializing the #logger_
const
* @brief free the memory allocated when initializing the #logger_
parameters
*
* @param log_
const
#logger_
const
to clean
* @param log_
params
#logger_
parameters
to clean
*/
void
logger_
const
_free
(
struct
logger_
const
*
log_const
)
{
free
(
log_
const
->
masks
);
free
(
log_
const
->
masks_name
);
free
(
log_
const
->
masks_size
);
void
logger_
parameters
_free
(
struct
logger_
parameters
*
log_params
)
{
free
(
log_
params
->
masks
);
free
(
log_
params
->
masks_name
);
free
(
log_
params
->
masks_size
);
}
...
...
src/logger.h
View file @
d45fbc71
...
...
@@ -79,24 +79,20 @@ struct dump;
#define logger_mask_consts 64
#define logger_mask_timestamp 128
#define logger_
size_mask
1 // size of the mask
#define logger_
size_
offset 7 // size of the offset
#define logger_
mask_size
1 // size of the mask
#define logger_offset
_size
7 // size of the offset
/* header constants
* Thoses are definitions from the format and therefore should not be changed!
* Size in bytes
*/
#define LOGGER_VERSION_SIZE 20 // size of the version message
#define LOGGER_NAME_SIZE 2 // size of the labels size information
#define LOGGER_MASK_SIZE 1 // size of the masks size information
#define LOGGER_NBER_SIZE 1 // size of the number of elements information
#define LOGGER_OFFSET_SIZE 1// size of the offset size information
#define LOGGER_DATATYPE_SIZE 1 // size of the data type information
#define logger_string_size 20 // size of the version message
#define logger_number_size 2 // size of the labels size information
extern
char
LOGGER_VERSION
[
LOGGER_VERSION_SIZE
];
extern
char
logger_version
[
logger_string_size
];
struct
logger_
const
{
struct
logger_
parameters
{
size_t
name
;
// labels size
size_t
offset
;
// offset size
size_t
mask
;
// mask size
...
...
@@ -118,7 +114,7 @@ enum logger_datatype {
logger_data_count
/* should be last */
};
extern
const
unsigned
int
logger_data_size
[];
extern
const
unsigned
int
logger_data
type
_size
[];
/* Function prototypes. */
int
logger_compute_chunk_size
(
unsigned
int
mask
);
...
...
@@ -137,8 +133,8 @@ int logger_read_gpart(struct gpart *p, size_t *offset, const char *buff);
int
logger_read_timestamp
(
unsigned
long
long
int
*
t
,
size_t
*
offset
,
const
char
*
buff
);
void
logger_
const
_init
(
struct
logger_
const
*
log_const
);
void
logger_
const
_free
(
struct
logger_
const
*
log_const
);
void
logger_
parameters
_init
(
struct
logger_
parameters
*
log_params
);
void
logger_
parameters
_free
(
struct
logger_
parameters
*
log_params
);
#endif
/* WITH_LOGGER */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment