Date: Thu, 30 Jul 2009 21:00:20 +0000 (UTC) From: Stanislav Sedov <stas@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r195981 - projects/libprocstat/usr.bin/fstat Message-ID: <200907302100.n6UL0Kvt045815@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: stas Date: Thu Jul 30 21:00:20 2009 New Revision: 195981 URL: http://svn.freebsd.org/changeset/base/195981 Log: - Add functions to free procstat-returned memory after usage. - Use these functions to free resources in fstat/fuser. Modified: projects/libprocstat/usr.bin/fstat/fstat.c projects/libprocstat/usr.bin/fstat/fuser.c projects/libprocstat/usr.bin/fstat/libprocstat.c projects/libprocstat/usr.bin/fstat/libprocstat.h Modified: projects/libprocstat/usr.bin/fstat/fstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 30 21:00:20 2009 (r195981) @@ -202,6 +202,7 @@ do_fstat(int argc, char **argv) dofiles(procstat, &p[i]); } free(p); + procstat_freeprocs(procstat, p); procstat_close(procstat); return (0); } @@ -224,6 +225,7 @@ dofiles(struct procstat *procstat, struc return; STAILQ_FOREACH(fst, head, next) print_file_info(procstat, fst, uname, cmd, pid); + procstat_freefiles(procstat, head); } Modified: projects/libprocstat/usr.bin/fstat/fuser.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/fuser.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/fuser.c Thu Jul 30 21:00:20 2009 (r195981) @@ -156,7 +156,6 @@ addfile(const char *path, struct reqfile reqfile->name = path; STAILQ_INIT(&reqfile->consumers); return (0); -/* XXX: devs? */ } int @@ -279,8 +278,9 @@ do_fuser(int argc, char *argv[]) } (void)fprintf(stderr, "\n"); } + procstat_freeprocs(procstat, p); procstat_close(procstat); - /* XXX: free resoucres .*/ + free(reqfiles); return (0); } @@ -350,7 +350,7 @@ dofiles(struct procstat *procstat, struc STAILQ_INSERT_TAIL(&reqfiles[i].consumers, cons, next); } } - /* XXX: free head */ + procstat_freefiles(procstat, head); } /* Modified: projects/libprocstat/usr.bin/fstat/libprocstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 30 21:00:20 2009 (r195981) @@ -226,6 +226,14 @@ fail: return (NULL); } +void +procstat_freeprocs(struct procstat *procstat __unused, struct kinfo_proc *p) +{ + + if (p != NULL) + free(p); +} + struct filestat_list * procstat_getfiles(struct procstat *procstat, struct kinfo_proc *kp, int mmapped) { @@ -238,6 +246,20 @@ procstat_getfiles(struct procstat *procs return (NULL); } +void +procstat_freefiles(struct procstat *procstat, struct filestat_list *head) +{ + struct filestat *fst, *tmp; + + STAILQ_FOREACH_SAFE(fst, head, next, tmp) { + if (procstat->type == PROCSTAT_SYSCTL && + fst->fs_typedep != NULL) + free(fst->fs_typedep); + free(fst); + } + free(head); +} + static struct filestat * filestat_new_entry(void *typedep, int type, int fd, int fflags, int uflags) { Modified: projects/libprocstat/usr.bin/fstat/libprocstat.h ============================================================================== --- projects/libprocstat/usr.bin/fstat/libprocstat.h Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/libprocstat.h Thu Jul 30 21:00:20 2009 (r195981) @@ -138,6 +138,9 @@ struct sockstat { STAILQ_HEAD(filestat_list, filestat); void procstat_close(struct procstat *procstat); +void procstat_freeprocs(struct procstat *procstat, struct kinfo_proc *p); +void procstat_freefiles(struct procstat *procstat, + struct filestat_list *head); struct filestat_list *procstat_getfiles(struct procstat *procstat, struct kinfo_proc *kp, int mmapped); struct kinfo_proc *procstat_getprocs(struct procstat *procstat,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907302100.n6UL0Kvt045815>