1 /*
2  * Copyright (C) 2018-2022 Intel Corporation.
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef __VMRECORD_H__
7 #define __VMRECORD_H__
8 #include "pthread.h"
9 
10 #define VMRECORD_HEAD_LINES 10
11 #define VMRECORD_TAG_LEN 9
12 #define VMRECORD_TAG_WAITING_SYNC	"      <=="
13 #define VMRECORD_TAG_NOT_FOUND		"NOT_FOUND"
14 #define VMRECORD_TAG_MISS_LOG		"MISS_LOGS"
15 #define VMRECORD_TAG_ON_GOING		" ON_GOING"
16 #define VMRECORD_TAG_NO_RESOURCE	"NO_RESORC"
17 #define VMRECORD_TAG_SUCCESS		"         "
18 
19 enum vmrecord_mark_t {
20 	SUCCESS,
21 	NOT_FOUND,
22 	WAITING_SYNC,
23 	ON_GOING,
24 	NO_RESRC,
25 	MISS_LOG
26 };
27 
28 struct vmrecord_t {
29 	char		*path;
30 	pthread_mutex_t	mtx;
31 	struct mm_file_t *recos;
32 };
33 
34 int vmrecord_last(struct vmrecord_t *vmrecord, const char *vm_name,
35 		size_t nlen, char *vmkey, size_t ksize);
36 int vmrecord_mark(struct vmrecord_t *vmrecord, const char *vmkey,
37 		   size_t klen, enum vmrecord_mark_t type);
38 int vmrecord_open_mark(struct vmrecord_t *vmrecord, const char *vmkey,
39 		   size_t klen, enum vmrecord_mark_t type);
40 int vmrecord_gen_ifnot_exists(struct vmrecord_t *vmrecord);
41 int vmrecord_new(struct vmrecord_t *vmrecord, const char *vm_name,
42 		  const char *key);
43 
44 
45 #endif
46