Module Name: src Committed By: jmcneill Date: Tue Aug 23 17:12:32 UTC 2011
Modified Files: src/sys/arch/usermode/dev: ld_thunkbus.c src/sys/arch/usermode/include: thunk.h src/sys/arch/usermode/usermode: thunk.c Log Message: struct stat also has time_t in it, so we can't use that in the thunk api either To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/usermode/dev/ld_thunkbus.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/usermode/include/thunk.h cvs rdiff -u -r1.14 -r1.15 src/sys/arch/usermode/usermode/thunk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/usermode/dev/ld_thunkbus.c diff -u src/sys/arch/usermode/dev/ld_thunkbus.c:1.4 src/sys/arch/usermode/dev/ld_thunkbus.c:1.5 --- src/sys/arch/usermode/dev/ld_thunkbus.c:1.4 Tue Aug 23 15:56:12 2011 +++ src/sys/arch/usermode/dev/ld_thunkbus.c Tue Aug 23 17:12:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ld_thunkbus.c,v 1.4 2011/08/23 15:56:12 jmcneill Exp $ */ +/* $NetBSD: ld_thunkbus.c,v 1.5 2011/08/23 17:12:32 jmcneill Exp $ */ /*- * Copyright (c) 2011 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ld_thunkbus.c,v 1.4 2011/08/23 15:56:12 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ld_thunkbus.c,v 1.5 2011/08/23 17:12:32 jmcneill Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -64,7 +64,6 @@ struct ld_softc sc_ld; int sc_fd; - struct stat sc_st; void *sc_ih; struct ld_thunkbus_transfer sc_tt; @@ -94,6 +93,7 @@ struct thunkbus_attach_args *taa = opaque; const char *path = taa->u.diskimage.path; struct sigaction sa; + ssize_t size, blksize; ld->sc_dv = self; @@ -102,18 +102,18 @@ aprint_error(": couldn't open %s: %d\n", path, errno); return; } - if (thunk_fstat(sc->sc_fd, &sc->sc_st) == -1) { + if (thunk_fstat_getsize(sc->sc_fd, &size, &blksize) == -1) { aprint_error(": couldn't stat %s: %d\n", path, errno); return; } aprint_naive("\n"); - aprint_normal(": %s (%lld)\n", path, (long long)sc->sc_st.st_size); + aprint_normal(": %s (%lld)\n", path, (long long)size); ld->sc_flags = LDF_ENABLED; - ld->sc_maxxfer = sc->sc_st.st_blksize; + ld->sc_maxxfer = blksize; ld->sc_secsize = 512; - ld->sc_secperunit = sc->sc_st.st_size / 512; + ld->sc_secperunit = size / ld->sc_secsize; ld->sc_maxqueuecnt = 1; ld->sc_start = ld_thunkbus_ldstart; ld->sc_dump = ld_thunkbus_lddump; Index: src/sys/arch/usermode/include/thunk.h diff -u src/sys/arch/usermode/include/thunk.h:1.13 src/sys/arch/usermode/include/thunk.h:1.14 --- src/sys/arch/usermode/include/thunk.h:1.13 Tue Aug 23 17:00:36 2011 +++ src/sys/arch/usermode/include/thunk.h Tue Aug 23 17:12:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: thunk.h,v 1.13 2011/08/23 17:00:36 jmcneill Exp $ */ +/* $NetBSD: thunk.h,v 1.14 2011/08/23 17:12:32 jmcneill Exp $ */ /*- * Copyright (c) 2011 Jared D. McNeill <jmcne...@invisible.ca> @@ -68,7 +68,7 @@ int thunk_execv(const char *, char * const []); int thunk_open(const char *, int, mode_t); -int thunk_fstat(int, struct stat *); +int thunk_fstat_getsize(int, ssize_t *, ssize_t *); ssize_t thunk_pread(int, void *, size_t, off_t); ssize_t thunk_pwrite(int, const void *, size_t, off_t); int thunk_fsync(int); Index: src/sys/arch/usermode/usermode/thunk.c diff -u src/sys/arch/usermode/usermode/thunk.c:1.14 src/sys/arch/usermode/usermode/thunk.c:1.15 --- src/sys/arch/usermode/usermode/thunk.c:1.14 Tue Aug 23 17:00:36 2011 +++ src/sys/arch/usermode/usermode/thunk.c Tue Aug 23 17:12:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: thunk.c,v 1.14 2011/08/23 17:00:36 jmcneill Exp $ */ +/* $NetBSD: thunk.c,v 1.15 2011/08/23 17:12:32 jmcneill Exp $ */ /*- * Copyright (c) 2011 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: thunk.c,v 1.14 2011/08/23 17:00:36 jmcneill Exp $"); +__RCSID("$NetBSD: thunk.c,v 1.15 2011/08/23 17:12:32 jmcneill Exp $"); #include <sys/types.h> #include <sys/ansi.h> @@ -205,9 +205,21 @@ } int -thunk_fstat(int fd, struct stat *sb) +thunk_fstat_getsize(int fd, ssize_t *size, ssize_t *blksize) { - return fstat(fd, sb); + struct stat st; + int error; + + error = fstat(fd, &st); + if (error) + return -1; + + if (size) + *size = st.st_size; + if (blksize) + *blksize = st.st_blksize; + + return 0; } ssize_t