diff options
Diffstat (limited to 'devel/libgtop2/files/patch-sysdeps_freebsd_fsusage.c')
-rw-r--r-- | devel/libgtop2/files/patch-sysdeps_freebsd_fsusage.c | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/devel/libgtop2/files/patch-sysdeps_freebsd_fsusage.c b/devel/libgtop2/files/patch-sysdeps_freebsd_fsusage.c deleted file mode 100644 index 128eda35b..000000000 --- a/devel/libgtop2/files/patch-sysdeps_freebsd_fsusage.c +++ /dev/null @@ -1,123 +0,0 @@ ---- sysdeps/freebsd/fsusage.c.orig Mon Feb 28 03:54:41 2005 -+++ sysdeps/freebsd/fsusage.c Tue May 24 01:49:42 2005 -@@ -9,6 +9,12 @@ - #include <unistd.h> - #include <sys/param.h> - #include <sys/mount.h> -+#if __FreeBSD_version >= 600000 -+#include <libgeom.h> -+#include <sys/resource.h> -+#include <devstat.h> -+#include <sys/devicestat.h> -+#endif - - #include <stdio.h> - #include <string.h> -@@ -27,15 +33,107 @@ _glibtop_freebsd_get_fsusage_read_write( - { - int result; - struct statfs sfs; -+#if __FreeBSD_version >= 600000 -+ struct devstat *ds; -+ void *sc; -+ struct timespec ts; -+ struct gprovider *gp; -+ struct gident *gid; -+ struct gmesh gmp; -+ double etime; -+ uint64_t ld[2]; -+#endif - - result = statfs (path, &sfs); - - if (result == -1) { -+ glibtop_warn_io_r (server, "statfs"); - return; - } -+#if __FreeBSD_version >= 600000 -+ ld[0] = 0; -+ ld[1] = 0; -+ result = geom_gettree (&gmp); -+ if (result != 0) { -+ glibtop_warn_io_r (server, "geom_gettree = %d", result); -+ return; -+ } -+ -+ result = geom_stats_open (); -+ if (result) { -+ glibtop_warn_io_r (server, "geom_stats_open()"); -+ geom_deletetree (&gmp); -+ return; -+ } -+ -+ sc = geom_stats_snapshot_get (); -+ if (sc == NULL) { -+ glibtop_warn_io_r (server, "geom_stats_snapshot_get()"); -+ geom_stats_close (); -+ geom_deletetree (&gmp); -+ return; -+ } -+ -+ geom_stats_snapshot_timestamp (sc, &ts); -+ etime = ts.tv_sec + (ts.tv_nsec * 1e-9); -+ geom_stats_snapshot_reset (sc); -+ -+ for (;;) { -+ ds = geom_stats_snapshot_next (sc); -+ if (ds == NULL) { -+ break; -+ } -+ if (ds->id == NULL) { -+ continue; -+ } -+ -+ gid = geom_lookupid (&gmp, ds->id); -+ if (gid == NULL) { -+ geom_deletetree (&gmp); -+ result = geom_gettree (&gmp); -+ gid = geom_lookupid (&gmp, ds->id); -+ } -+ -+ if (gid == NULL) { -+ continue; -+ } -+ if (gid->lg_what == ISCONSUMER) { -+ continue; -+ } -+ -+ gp = gid->lg_ptr; -+ -+ if (!g_str_has_suffix (sfs.f_mntfromname, gp->lg_name)) { -+ continue; -+ } -+ else { -+ result = devstat_compute_statistics (ds, NULL, etime, -+ DSM_TOTAL_TRANSFERS_READ, -+ &ld[0], -+ DSM_TOTAL_TRANSFERS_WRITE, -+ &ld[1], DSM_NONE); -+ if (result != 0) { -+ glibtop_warn_io_r (server, -+ "devstat_compute_statistics()"); -+ geom_stats_snapshot_free (sc); -+ geom_stats_close (); -+ geom_deletetree (&gmp); -+ return; -+ } -+ break; -+ } -+ } - -+ geom_stats_snapshot_free (sc); -+ geom_stats_close (); -+ geom_deletetree (&gmp); -+ -+ buf->read = ld[0]; -+ buf->write = ld[1]; -+#else - buf->read = sfs.f_syncreads + sfs.f_asyncreads; - buf->write = sfs.f_syncwrites + sfs.f_asyncwrites; -+#endif - - buf->flags |= (1 << GLIBTOP_FSUSAGE_READ) | (1 << GLIBTOP_FSUSAGE_WRITE); - } |