• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *   Copyright (c) International Business Machines Corp., 2001-2004
3  *
4  *   This program is free software;  you can redistribute it and/or modify
5  *   it under the terms of the GNU General Public License as published by
6  *   the Free Software Foundation; either version 2 of the License, or
7  *   (at your option) any later version.
8  *
9  *   This program is distributed in the hope that it will be useful,
10  *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
12  *   the GNU General Public License for more details.
13  *
14  *   You should have received a copy of the GNU General Public License
15  *   along with this program;  if not, write to the Free Software
16  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 #include <pthread.h>
19 #include <sys/time.h>
20 #include <sys/times.h>
21 #include <unistd.h>
22 #include <string.h>
23 #include <stdio.h>
24 #include <stdlib.h>
25 #include <pthread.h>
26 
27 #include <assert.h>
28 
29 #include "config.h"
30 
31 #include "ffsb.h"
32 #include "util.h"
33 #include "parser.h"
34 
init_ffsb_config(ffsb_config_t * fc,unsigned num_fs,unsigned num_tg)35 void init_ffsb_config(ffsb_config_t * fc, unsigned num_fs, unsigned num_tg)
36 {
37 	memset(fc, 0, sizeof(ffsb_config_t));
38 
39 	fc->num_totalthreads = -1;
40 	fc->num_threadgroups = num_tg;
41 	fc->num_filesys = num_fs;
42 
43 	fc->groups = ffsb_malloc(sizeof(ffsb_tg_t) * num_tg);
44 	fc->filesystems = ffsb_malloc(sizeof(ffsb_fs_t) * num_fs);
45 }
46 
init_ffsb_config_1fs(ffsb_config_t * fc,ffsb_fs_t * fs,ffsb_tg_t * tg)47 void init_ffsb_config_1fs(ffsb_config_t * fc, ffsb_fs_t * fs, ffsb_tg_t * tg)
48 {
49 	memset(fc, 0, sizeof(*fc));
50 
51 	fc->num_totalthreads = tg_get_numthreads(tg);
52 	fc->num_threadgroups = 1;
53 	fc->num_filesys = 1;
54 
55 	fc->groups = tg;
56 	fc->filesystems = fs;
57 }
58 
destroy_ffsb_config(ffsb_config_t * fc)59 void destroy_ffsb_config(ffsb_config_t * fc)
60 {
61 	int i;
62 	for (i = 0; i < fc->num_filesys; i++)
63 		destroy_ffsb_fs(&fc->filesystems[i]);
64 
65 	for (i = 0; i < fc->num_threadgroups; i++)
66 		destroy_ffsb_tg(&fc->groups[i]);
67 
68 	free(fc->groups);
69 	free(fc->filesystems);
70 }
71 
fc_set_time(ffsb_config_t * fc,unsigned time)72 void fc_set_time(ffsb_config_t * fc, unsigned time)
73 {
74 	fc->time = time;
75 }
76 
fc_get_num_filesys(ffsb_config_t * fc)77 unsigned fc_get_num_filesys(ffsb_config_t * fc)
78 {
79 	return fc->num_filesys;
80 }
81 
fc_get_tg(ffsb_config_t * fc,unsigned num)82 struct ffsb_tg *fc_get_tg(ffsb_config_t * fc, unsigned num)
83 {
84 	assert(num < fc->num_threadgroups);
85 	return &fc->groups[num];
86 }
87 
fc_get_fs(ffsb_config_t * fc,unsigned num)88 struct ffsb_fs *fc_get_fs(ffsb_config_t * fc, unsigned num)
89 {
90 	assert(num < fc->num_filesys);
91 	return &fc->filesystems[num];
92 }
93 
fc_set_num_totalthreads(ffsb_config_t * fc,int num)94 void fc_set_num_totalthreads(ffsb_config_t * fc, int num)
95 {
96 	assert(num > 0);
97 	fc->num_totalthreads = num;
98 }
99 
fc_set_callout(ffsb_config_t * fc,char * callout)100 void fc_set_callout(ffsb_config_t * fc, char *callout)
101 {
102 	free(fc->callout);
103 	fc->callout = ffsb_strdup(callout);
104 }
105 
fc_get_callout(ffsb_config_t * fc)106 char *fc_get_callout(ffsb_config_t * fc)
107 {
108 	return fc->callout;
109 }
110