Page MenuHomeFreeBSD

D58060.id182465.diff
No OneTemporary

D58060.id182465.diff

diff --git a/tests/sys/kern/exterr_test.c b/tests/sys/kern/exterr_test.c
--- a/tests/sys/kern/exterr_test.c
+++ b/tests/sys/kern/exterr_test.c
@@ -23,6 +23,8 @@
* SUCH DAMAGE.
*/
+#define UEXTERR_CATEGORY "tests/sys/kern/exterr_test.c"
+
#include <sys/param.h>
#include <sys/exterrvar.h>
#include <sys/mman.h>
@@ -31,9 +33,11 @@
#include <atf-c.h>
#include <errno.h>
#include <exterr.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <uexterror.h>
#include <unistd.h>
/*
@@ -74,6 +78,35 @@
ATF_CHECK(strstr(exterr, " is not subset of ") != NULL);
}
+ATF_TC(uexterr_set);
+ATF_TC_HEAD(uexterr_set, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Set an print error status from userspace");
+}
+ATF_TC_BODY(uexterr_set, tc)
+{
+ char exterr[UEXTERROR_MAXLEN];
+ int r;
+
+ errno = 0;
+ UEXTERROR(EINVAL, "pointer %p int %d", (uintptr_t)&r, UINTMAX_MAX);
+ ATF_CHECK_EQ(errno, EINVAL);
+ r = uexterr_gettext(exterr, sizeof(exterr));
+ ATF_CHECK_EQ(0, r);
+ printf("Extended error: %s\n", exterr);
+ /* The pointer's value will change, but the rest should be stable. */
+ ATF_CHECK(strncmp("pointer 0x", exterr, strlen("pointer 0x")) == 0);
+ ATF_CHECK(strstr(exterr, " int -1") != 0);
+
+ errno = 0;
+ UEXTERROR(EINVAL, "long 0x%lx int %u", UINTMAX_MAX, UINTMAX_MAX);
+ ATF_CHECK_EQ(errno, EINVAL);
+ r = uexterr_gettext(exterr, sizeof(exterr));
+ ATF_CHECK_EQ(0, r);
+ printf("Extended error: %s\n", exterr);
+ ATF_CHECK(strcmp("long 0xffffffffffffffff int 4294967295", exterr) == 0);
+}
+
ATF_TC(gettext_noextended);
ATF_TC_HEAD(gettext_noextended, tc)
{
@@ -150,6 +183,7 @@
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, gettext_extended);
+ ATF_TP_ADD_TC(tp, uexterr_set);
ATF_TP_ADD_TC(tp, gettext_noextended);
ATF_TP_ADD_TC(tp, gettext_noextended_after_extended);
ATF_TP_ADD_TC(tp, exterr_dynamic_categories);

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 2, 4:52 AM (8 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35406564
Default Alt Text
D58060.id182465.diff (1 KB)

Event Timeline