Date: Sat, 10 Jan 2015 19:12:47 +1100 From: Peter Jeremy <peter@rulingia.com> To: freebsd-arm@freebsd.org Subject: Re: read(2) into some addresses doesn't return data on RPi Message-ID: <20150110081247.GF77914@server.rulingia.com> In-Reply-To: <20150110060412.GE77914@server.rulingia.com> References: <20150110060412.GE77914@server.rulingia.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--0/kgSOzhNoDC5T3a Content-Type: multipart/mixed; boundary="1ccMZA6j1vT5UqiK" Content-Disposition: inline --1ccMZA6j1vT5UqiK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2015-Jan-10 17:04:12 +1100, Peter Jeremy <peter@rulingia.com> wrote: >Running the attached program on /dev/mmcsd0s1 gave me the following result= s: Which got stripped (hence the signature failure). --=20 Peter Jeremy --1ccMZA6j1vT5UqiK Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="read_check.c" #include <fcntl.h> #include <unistd.h> #include <err.h> #include <stdio.h> #include <stdlib.h> #define RLEN 512 static void check(int fd, int num, char *buf); static void initbuf(char *buf); static void checkbuf(char *buf, int num); int main(int argc, char **argv) { char buf[65536]; int fd, off; fd = open(argv[1], O_RDONLY); if (fd < 0) err(1, "open %s failed", argv[1]); for (off = 2*RLEN; off < sizeof(buf) - 2*RLEN; off += 8) check(fd, 1, buf + off); } static void check(int fd, int num, char *buf) { initbuf(buf); if (read(fd, buf, RLEN) != RLEN) err(1, "read%d failed", num); checkbuf(buf, num); } static void initbuf(char *buf) { int i; for (i = -RLEN; i < RLEN*2; i += sizeof(0ULL)) { *(unsigned long long *)(buf + i) = 0xfeedbabedeadbeefULL; } } #define FAIL (RLEN / sizeof(0ULL)) static void checkbuf(char *buf, int num) { int i, j; for (i = -RLEN, j = 0; i < 0; i += sizeof(0ULL)) { if (*(unsigned long long *)(buf + i) != 0xfeedbabedeadbeefULL) j++; } printf("read%d(%p) pre:%s", num, buf, (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); fprintf(stderr, "read%d(%p) pre:%s", num, buf, (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); for (i = 0, j = 0; i < RLEN; i += sizeof(0ULL)) { if (*(unsigned long long *)(buf + i) == 0xfeedbabedeadbeefULL) j++; } printf(" buf:%s", (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); fprintf(stderr, " buf:%s", (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); for (i = RLEN, j = 0; i < RLEN*2; i += sizeof(0ULL)) { if (*(unsigned long long *)(buf + i) != 0xfeedbabedeadbeefULL) j++; } printf(" post:%s\n", (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); fprintf(stderr, " post:%s\n", (j == 0) ? "OK" : (j == FAIL) ? "FAIL" : "PFAIL"); fflush(stdout); fsync(1); fflush(stderr); fsync(2); } --1ccMZA6j1vT5UqiK-- --0/kgSOzhNoDC5T3a Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQJ8BAEBCgBmBQJUsN7/XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRFRUIyOTg2QzMwNjcxRTc0RTY1QzIyN0Ux NkE1OTdBMEU0QTIwQjM0AAoJEBall6Dkogs0MakP/0aCQnb+Kk598SmSsNtONDMP mgfQxWu+eJb4akxQ7mrSME1SorduNUqbI9iAywNZerJaMYy/rrjibbYwYc1cgO8N By3UJKSnK7PoTnvoEl90PppXMcgJ5fgJcdS8nNjwaT/KIrEJbo0oKJxEJ5UrRLRZ 1hQ9KAZtfxIK3hgRi9wH1PefjLz6ZDyDOKzPgCa1PtFamR3CclIYOD5aFcaL7JUr 8a0krBI7mR885Ooc+Ze81kZOgTrffrZKcbIcYNcvd530+qlodCgnld7J54ovtMzt UEhj2Qiqqr8k1Zhg5XNQL7rsfwX209gL4EsyKoQ9pjDxtt2wap1mfnftBFQM+OTi 0WRFPcTeBDEKnedPUWPVIW2zzYLmuQFY0QIF+a3tA425ICjF1vszjbfCDYaE86XP evG3GNXDukdLhcQnQs7JhBGUc3kQdGlaMvXUTWm2SmYyWoO8caDT845nQqoDy8li OcNmvnVAw0pQukthBaU2tf4QP08FmL8HA4CqGJruESiTXxLxrc0eyuzkGDG/L6aL 7tWDMd7lrmhVtvWgxSwoQjLniqpwKAUkficKM8vlYRoaRExVTXreCE02EXKTJUdQ z8FuJOocvFLEBMlo93J8J95nikYiICvVyvY8vfcD5FT6hpD4EPA++hjrlTOTEMZt Vuxo4IFbf443vsyNUtSw =osM5 -----END PGP SIGNATURE----- --0/kgSOzhNoDC5T3a--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150110081247.GF77914>