Lines Matching defs:fsc

94 /* Clear up and free parts of the fsc structure. */
96 free_fsc(struct freebsd_syscall *fsc)
100 free(fsc->args);
101 if (fsc->s_args) {
102 for (i = 0; i < fsc->nargs; i++)
103 free(fsc->s_args[i]);
104 free(fsc->s_args);
106 free(fsc);
121 struct freebsd_syscall *fsc;
152 fsc = alloc_fsc();
153 if (fsc == NULL)
155 fsc->number = syscall_num;
156 fsc->name = (syscall_num < 0 || syscall_num >= nsyscalls) ?
158 if (!fsc->name) {
163 if (fsc->name && (trussinfo->flags & FOLLOWFORKS) &&
164 (strcmp(fsc->name, "fork") == 0 ||
165 strcmp(fsc->name, "rfork") == 0 ||
166 strcmp(fsc->name, "vfork") == 0))
172 fsc->args = malloc((1 + nargs) * sizeof(unsigned long));
175 iorequest.piod_addr = fsc->args;
182 if (fsc->name)
183 sc = get_syscall(fsc->name);
185 fsc->nargs = sc->nargs;
189 "args to %d\n", fsc->name, nargs);
191 fsc->nargs = nargs;
194 fsc->s_args = calloc(1, (1 + fsc->nargs) * sizeof(char *));
195 fsc->sc = sc;
205 if (fsc->name) {
207 fprintf(stderr, "syscall %s(", fsc->name);
209 for (i = 0; i < fsc->nargs; i++) {
212 fsc->args[sc->args[i].offset] : fsc->args[i],
213 i < (fsc->nargs - 1) ? "," : "");
216 fsc->s_args[i] = print_arg(&sc->args[i],
217 fsc->args, 0, trussinfo);
229 if (fsc->name != NULL && (strcmp(fsc->name, "execve") == 0 ||
230 strcmp(fsc->name, "exit") == 0)) {
236 if (strcmp(fsc->name, "execve") == 0) {
238 if (fsc->s_args[1]) {
239 free(fsc->s_args[1]);
240 fsc->s_args[1] = NULL;
244 if (fsc->s_args[2]) {
245 free(fsc->s_args[2]);
246 fsc->s_args[2] = NULL;
251 trussinfo->curthread->fsc = fsc;
265 struct freebsd_syscall *fsc;
271 if (trussinfo->curthread->fsc == NULL)
289 fsc = trussinfo->curthread->fsc;
290 sc = fsc->sc;
292 for (i = 0; i < fsc->nargs; i++)
293 asprintf(&fsc->s_args[i], "0x%lx", fsc->args[i]);
308 fsc->args[sc->args[i].offset]);
311 fsc->args, retval, trussinfo);
313 fsc->s_args[i] = temp;
318 if (fsc->name != NULL && (strcmp(fsc->name, "execve") == 0 ||
319 strcmp(fsc->name, "exit") == 0))
327 print_syscall_ret(trussinfo, fsc->name, fsc->nargs, fsc->s_args, errorp,
328 retval, fsc->sc);
329 free_fsc(fsc);