Lines Matching defs:fsc

92 /* Clear up and free parts of the fsc structure. */
94 free_fsc(struct linux_syscall *fsc)
98 if (fsc->s_args) {
99 for (i = 0; i < fsc->nargs; i++)
100 free(fsc->s_args[i]);
101 free(fsc->s_args);
103 free(fsc);
117 struct linux_syscall *fsc;
131 fsc = alloc_fsc();
132 if (fsc == NULL)
134 fsc->number = syscall_num;
135 fsc->name = (syscall_num < 0 || syscall_num >= nsyscalls) ?
137 if (!fsc->name) {
142 if (fsc->name && (trussinfo->flags & FOLLOWFORKS) &&
143 (strcmp(fsc->name, "linux_fork") == 0 ||
144 strcmp(fsc->name, "linux_vfork") == 0))
158 fsc->args[0] = regs.r_ebx;
159 fsc->args[1] = regs.r_ecx;
160 fsc->args[2] = regs.r_edx;
161 fsc->args[3] = regs.r_esi;
162 fsc->args[4] = regs.r_edi;
164 sc = get_syscall(fsc->name);
166 fsc->nargs = sc->nargs;
170 "args to %d\n", fsc->name, nargs);
172 fsc->nargs = nargs;
175 fsc->s_args = calloc(1, (1 + fsc->nargs) * sizeof(char *));
176 fsc->sc = sc;
186 if (fsc->name) {
188 fprintf(stderr, "syscall %s(", fsc->name);
190 for (i = 0; i < fsc->nargs; i++) {
193 fsc->args[sc->args[i].offset] : fsc->args[i],
194 i < (fsc->nargs - 1) ? "," : "");
197 fsc->s_args[i] = print_arg(&sc->args[i],
198 fsc->args, 0, trussinfo);
210 if (fsc->name != NULL && (strcmp(fsc->name, "linux_execve") == 0 ||
211 strcmp(fsc->name, "exit") == 0)) {
217 if (strcmp(fsc->name, "linux_execve") == 0) {
219 if (fsc->s_args[1]) {
220 free(fsc->s_args[1]);
221 fsc->s_args[1] = NULL;
225 if (fsc->s_args[2]) {
226 free(fsc->s_args[2]);
227 fsc->s_args[2] = NULL;
232 trussinfo->curthread->fsc = fsc;
254 struct linux_syscall *fsc;
260 if (trussinfo->curthread->fsc == NULL)
278 fsc = trussinfo->curthread->fsc;
279 sc = fsc->sc;
281 for (i = 0; i < fsc->nargs; i++)
282 asprintf(&fsc->s_args[i], "0x%lx", fsc->args[i]);
297 fsc->args[sc->args[i].offset]);
300 fsc->args, retval, trussinfo);
302 fsc->s_args[i] = temp;
319 if (fsc->name != NULL && (strcmp(fsc->name, "linux_execve") == 0 ||
320 strcmp(fsc->name, "exit") == 0))
323 print_syscall_ret(trussinfo, fsc->name, fsc->nargs, fsc->s_args, errorp,
324 errorp ? i : retval, fsc->sc);
325 free_fsc(fsc);