svn commit: r195981 - projects/libprocstat/usr.bin/fstat
Stanislav Sedov
stas at FreeBSD.org
Thu Jul 30 21:00:21 UTC 2009
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,
More information about the svn-src-projects
mailing list