]> git.saurik.com Git - apple/xnu.git/blob - tools/tests/libMicro/apple/lm_null_call.c
825c14c7d3e443365f88df917e725dbf4f0dc0f8
[apple/xnu.git] / tools / tests / libMicro / apple / lm_null_call.c
1 /*
2 * Copyright (c) 2006 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28
29
30 /*
31 * Order of Execution
32 *
33 * benchmark_init
34 *
35 * benchmark_optswitch
36 *
37 * benchmark_initrun
38 *
39 * benchmark_initworker
40 * benchmark_initbatch
41 * benchmark
42 * benchmark_finibatch
43 * benchmark_initbatch
44 * benchmark
45 * benchmark_finibatch, etc.
46 * benchmark_finiworker
47 *
48 * benchmark_result
49 *
50 * benchmark_finirun
51 *
52 * benchmark_fini
53 */
54
55
56
57 #ifdef __sun
58 #pragma ident "@(#)socket.c 1.3 05/08/04 Apple Inc."
59 #endif
60
61
62
63 #include <unistd.h>
64 #include <stdlib.h>
65 #include <stdio.h>
66
67 #include "../libmicro.h"
68
69 /*
70 * Your state variables should live in the tsd_t struct below
71 */
72 typedef struct {
73 int fd;
74 char* file;
75 } tsd_t;
76
77 /*ARGSUSED*/
78 int
79 benchmark_initbatch(void *tsd)
80 {
81 return (0);
82 }
83
84 int
85 benchmark_finirun()
86 {
87 return (0);
88 }
89
90 int
91 benchmark_init()
92 {
93 /*
94 * the lm_optstr must be defined here or no options for you
95 *
96 * ...and the framework will throw an error
97 *
98 */
99 (void) sprintf(lm_optstr, "t:");
100 /*
101 * working hypothesis:
102 *
103 * tsd_t is the struct that we can pass around our
104 * state info in
105 *
106 * will allocate the space we need for this
107 * structure throughout the rest of the framework
108 */
109 lm_tsdsize = sizeof (tsd_t);
110
111 (void) sprintf(lm_usage,
112 " [-t int (default 1)]\n"
113 "notes: measures nothing\n");
114 return (0);
115 }
116
117 int
118 benchmark_fini()
119 {
120 (void) fprintf(stderr, "benchmark_fini\n");
121 return (0);
122 }
123
124 int
125 benchmark_finibatch(void *tsd)
126 {
127 return (0);
128 }
129
130 char *
131 benchmark_result()
132 {
133 static char result = '\0';
134 (void) fprintf(stderr, "null_call (getppid)\n");
135 return (&result);
136 }
137
138 int
139 benchmark_finiworker(void *tsd)
140 {
141 return (0);
142 }
143
144 int
145 benchmark_optswitch(int opt, char *optarg)
146 {
147 return (0);
148 }
149
150 int
151 benchmark_initworker(void *tsd)
152 {
153 /*
154 * initialize your state variables here first
155 */
156 return (0);
157 }
158
159 int
160 benchmark_initrun()
161 {
162 return (0);
163 }
164
165 int
166 benchmark(void *tsd, result_t *res)
167 {
168 /*
169 * initialize your state variables here last
170 *
171 * and realize that you are paying for your initialization here
172 * and it is really a bad idea
173 */
174 int i;
175
176 for (i = 0; i < lm_optB; i++) {
177 /*
178 * just to show that ts really contains state
179 */
180 getppid();
181 }
182 res->re_count = i;
183
184 return (0);
185 }