[PATCH 5/5] kselftest: Add exit code defines
Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. Cc: Shuah Khan Cc: linux-...@vger.kernel.org Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Davidlohr Bueso Cc: KOSAKI Motohiro Signed-off-by: Darren Hart --- tools/testing/selftests/kselftest.h | 17 - 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include #include +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } static inline int ksft_exit_fail(void) { - exit(1); + exit(KSFT_FAIL); } static inline int ksft_exit_xfail(void) { - exit(2); + exit(KSFT_XFAIL); } static inline int ksft_exit_xpass(void) { - exit(3); + exit(KSFT_XPASS); } static inline int ksft_exit_skip(void) { - exit(4); + exit(KSFT_SKIP); } #endif /* __KSELFTEST_H */ -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 5/5] kselftest: Add exit code defines
Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. Cc: Shuah Khan shua...@osg.samsung.com Cc: linux-...@vger.kernel.org Cc: Ingo Molnar mi...@elte.hu Cc: Peter Zijlstra pet...@infradead.org Cc: Thomas Gleixner t...@linutronix.de Cc: Davidlohr Bueso d...@stgolabs.net Cc: KOSAKI Motohiro kosaki.motoh...@jp.fujitsu.com Signed-off-by: Darren Hart dvh...@linux.intel.com --- tools/testing/selftests/kselftest.h | 17 - 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } static inline int ksft_exit_fail(void) { - exit(1); + exit(KSFT_FAIL); } static inline int ksft_exit_xfail(void) { - exit(2); + exit(KSFT_XFAIL); } static inline int ksft_exit_xpass(void) { - exit(3); + exit(KSFT_XPASS); } static inline int ksft_exit_skip(void) { - exit(4); + exit(KSFT_SKIP); } #endif /* __KSELFTEST_H */ -- 2.1.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Mon, Mar 30, 2015 at 09:26:07AM -0700, Darren Hart wrote: > Fair point. This isn't a space I'm well versed in, but some standard means > of doing this would be welcome. I'm reading standard memes, time to get away from the keyboard for a little while I suppose :-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On 3/29/15, 4:44 PM, "Michael Ellerman" wrote: >On Fri, 2015-03-27 at 16:09 -0700, Darren Hart wrote: >> >> On 3/27/15 3:59 PM, Michael Ellerman wrote: >> > On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: >> >> Define the exit codes with KSFT_PASS and similar so tests can use >>these >> >> directly if they choose. Also enable harnesses and other tooling to >>use >> >> the defines instead of hardcoding the return codes. >> > >> > +1 >> > >> >> diff --git a/tools/testing/selftests/kselftest.h >>b/tools/testing/selftests/kselftest.h >> >> index 572c888..ef1c80d 100644 >> >> --- a/tools/testing/selftests/kselftest.h >> >> +++ b/tools/testing/selftests/kselftest.h >> >> @@ -13,6 +13,13 @@ >> >> #include >> >> #include >> >> >> >> +/* define kselftest exit codes */ >> >> +#define KSFT_PASS 0 >> >> +#define KSFT_FAIL 1 >> >> +#define KSFT_XFAIL 2 >> >> +#define KSFT_XPASS 3 >> >> +#define KSFT_SKIP 4 >> >> + >> >> /* counters */ >> >> struct ksft_count { >> >> unsigned int ksft_pass; >> >> @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) >> >> >> >> static inline int ksft_exit_pass(void) >> >> { >> >> - exit(0); >> >> + exit(KSFT_PASS); >> >> } >> > >> > Am I the only person who's bothered by the fact that these don't >>actually >> > return int? >> >> That bothered me to, but I couldn't be bothered to go read the manuals >> apparently to come up with a compelling argument :-) > >Yeah, obviously the compiler accepts it, but it's still a bit weird. > >> I also think the ksft_exit* routines should go ahead and increment the >> counters (at least optionally) so we don't have to call two functions. > >But the ksft_exit_*() routines exit, so there's no point incrementing the >counters. Unless they *also* print the counters before exiting? > >To be honest I think we need to decide if the selftests are going to >speak TAP >or xUnit or whatever, and then switch to that. In their current form these >helpers don't help much. Fair point. This isn't a space I'm well versed in, but some standard means of doing this would be welcome. -- Darren Hart Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On 3/29/15, 4:44 PM, Michael Ellerman m...@ellerman.id.au wrote: On Fri, 2015-03-27 at 16:09 -0700, Darren Hart wrote: On 3/27/15 3:59 PM, Michael Ellerman wrote: On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. +1 diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } Am I the only person who's bothered by the fact that these don't actually return int? That bothered me to, but I couldn't be bothered to go read the manuals apparently to come up with a compelling argument :-) Yeah, obviously the compiler accepts it, but it's still a bit weird. I also think the ksft_exit* routines should go ahead and increment the counters (at least optionally) so we don't have to call two functions. But the ksft_exit_*() routines exit, so there's no point incrementing the counters. Unless they *also* print the counters before exiting? To be honest I think we need to decide if the selftests are going to speak TAP or xUnit or whatever, and then switch to that. In their current form these helpers don't help much. Fair point. This isn't a space I'm well versed in, but some standard means of doing this would be welcome. -- Darren Hart Intel Open Source Technology Center -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Mon, Mar 30, 2015 at 09:26:07AM -0700, Darren Hart wrote: Fair point. This isn't a space I'm well versed in, but some standard means of doing this would be welcome. I'm reading standard memes, time to get away from the keyboard for a little while I suppose :-) -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Fri, 2015-03-27 at 16:09 -0700, Darren Hart wrote: > > On 3/27/15 3:59 PM, Michael Ellerman wrote: > > On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: > >> Define the exit codes with KSFT_PASS and similar so tests can use these > >> directly if they choose. Also enable harnesses and other tooling to use > >> the defines instead of hardcoding the return codes. > > > > +1 > > > >> diff --git a/tools/testing/selftests/kselftest.h > >> b/tools/testing/selftests/kselftest.h > >> index 572c888..ef1c80d 100644 > >> --- a/tools/testing/selftests/kselftest.h > >> +++ b/tools/testing/selftests/kselftest.h > >> @@ -13,6 +13,13 @@ > >> #include > >> #include > >> > >> +/* define kselftest exit codes */ > >> +#define KSFT_PASS 0 > >> +#define KSFT_FAIL 1 > >> +#define KSFT_XFAIL 2 > >> +#define KSFT_XPASS 3 > >> +#define KSFT_SKIP 4 > >> + > >> /* counters */ > >> struct ksft_count { > >>unsigned int ksft_pass; > >> @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) > >> > >> static inline int ksft_exit_pass(void) > >> { > >> - exit(0); > >> + exit(KSFT_PASS); > >> } > > > > Am I the only person who's bothered by the fact that these don't actually > > return int? > > That bothered me to, but I couldn't be bothered to go read the manuals > apparently to come up with a compelling argument :-) Yeah, obviously the compiler accepts it, but it's still a bit weird. > I also think the ksft_exit* routines should go ahead and increment the > counters (at least optionally) so we don't have to call two functions. But the ksft_exit_*() routines exit, so there's no point incrementing the counters. Unless they *also* print the counters before exiting? To be honest I think we need to decide if the selftests are going to speak TAP or xUnit or whatever, and then switch to that. In their current form these helpers don't help much. cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Fri, 2015-03-27 at 16:09 -0700, Darren Hart wrote: On 3/27/15 3:59 PM, Michael Ellerman wrote: On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. +1 diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } Am I the only person who's bothered by the fact that these don't actually return int? That bothered me to, but I couldn't be bothered to go read the manuals apparently to come up with a compelling argument :-) Yeah, obviously the compiler accepts it, but it's still a bit weird. I also think the ksft_exit* routines should go ahead and increment the counters (at least optionally) so we don't have to call two functions. But the ksft_exit_*() routines exit, so there's no point incrementing the counters. Unless they *also* print the counters before exiting? To be honest I think we need to decide if the selftests are going to speak TAP or xUnit or whatever, and then switch to that. In their current form these helpers don't help much. cheers -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On 3/27/15 3:59 PM, Michael Ellerman wrote: > On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: >> Define the exit codes with KSFT_PASS and similar so tests can use these >> directly if they choose. Also enable harnesses and other tooling to use >> the defines instead of hardcoding the return codes. > > +1 > >> diff --git a/tools/testing/selftests/kselftest.h >> b/tools/testing/selftests/kselftest.h >> index 572c888..ef1c80d 100644 >> --- a/tools/testing/selftests/kselftest.h >> +++ b/tools/testing/selftests/kselftest.h >> @@ -13,6 +13,13 @@ >> #include >> #include >> >> +/* define kselftest exit codes */ >> +#define KSFT_PASS 0 >> +#define KSFT_FAIL 1 >> +#define KSFT_XFAIL 2 >> +#define KSFT_XPASS 3 >> +#define KSFT_SKIP 4 >> + >> /* counters */ >> struct ksft_count { >> unsigned int ksft_pass; >> @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) >> >> static inline int ksft_exit_pass(void) >> { >> -exit(0); >> +exit(KSFT_PASS); >> } > > Am I the only person who's bothered by the fact that these don't actually > return int? That bothered me to, but I couldn't be bothered to go read the manuals apparently to come up with a compelling argument :-) I also think the ksft_exit* routines should go ahead and increment the counters (at least optionally) so we don't have to call two functions. -- Darren Hart Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: > Define the exit codes with KSFT_PASS and similar so tests can use these > directly if they choose. Also enable harnesses and other tooling to use > the defines instead of hardcoding the return codes. +1 > diff --git a/tools/testing/selftests/kselftest.h > b/tools/testing/selftests/kselftest.h > index 572c888..ef1c80d 100644 > --- a/tools/testing/selftests/kselftest.h > +++ b/tools/testing/selftests/kselftest.h > @@ -13,6 +13,13 @@ > #include > #include > > +/* define kselftest exit codes */ > +#define KSFT_PASS 0 > +#define KSFT_FAIL 1 > +#define KSFT_XFAIL 2 > +#define KSFT_XPASS 3 > +#define KSFT_SKIP 4 > + > /* counters */ > struct ksft_count { > unsigned int ksft_pass; > @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) > > static inline int ksft_exit_pass(void) > { > - exit(0); > + exit(KSFT_PASS); > } Am I the only person who's bothered by the fact that these don't actually return int? cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 5/5] kselftest: Add exit code defines
Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. Cc: Shuah Khan Cc: linux-...@vger.kernel.org Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Davidlohr Bueso Cc: KOSAKI Motohiro Signed-off-by: Darren Hart --- tools/testing/selftests/kselftest.h | 17 - 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include #include +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } static inline int ksft_exit_fail(void) { - exit(1); + exit(KSFT_FAIL); } static inline int ksft_exit_xfail(void) { - exit(2); + exit(KSFT_XFAIL); } static inline int ksft_exit_xpass(void) { - exit(3); + exit(KSFT_XPASS); } static inline int ksft_exit_skip(void) { - exit(4); + exit(KSFT_SKIP); } #endif /* __KSELFTEST_H */ -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 5/5] kselftest: Add exit code defines
Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. Cc: Shuah Khan shua...@osg.samsung.com Cc: linux-...@vger.kernel.org Cc: Ingo Molnar mi...@elte.hu Cc: Peter Zijlstra pet...@infradead.org Cc: Thomas Gleixner t...@linutronix.de Cc: Davidlohr Bueso d...@stgolabs.net Cc: KOSAKI Motohiro kosaki.motoh...@jp.fujitsu.com Signed-off-by: Darren Hart dvh...@linux.intel.com --- tools/testing/selftests/kselftest.h | 17 - 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } static inline int ksft_exit_fail(void) { - exit(1); + exit(KSFT_FAIL); } static inline int ksft_exit_xfail(void) { - exit(2); + exit(KSFT_XFAIL); } static inline int ksft_exit_xpass(void) { - exit(3); + exit(KSFT_XPASS); } static inline int ksft_exit_skip(void) { - exit(4); + exit(KSFT_SKIP); } #endif /* __KSELFTEST_H */ -- 2.1.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. +1 diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { - exit(0); + exit(KSFT_PASS); } Am I the only person who's bothered by the fact that these don't actually return int? cheers -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 5/5] kselftest: Add exit code defines
On 3/27/15 3:59 PM, Michael Ellerman wrote: On Fri, 2015-03-27 at 15:17 -0700, Darren Hart wrote: Define the exit codes with KSFT_PASS and similar so tests can use these directly if they choose. Also enable harnesses and other tooling to use the defines instead of hardcoding the return codes. +1 diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..ef1c80d 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -13,6 +13,13 @@ #include stdlib.h #include unistd.h +/* define kselftest exit codes */ +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + /* counters */ struct ksft_count { unsigned int ksft_pass; @@ -40,23 +47,23 @@ static inline void ksft_print_cnts(void) static inline int ksft_exit_pass(void) { -exit(0); +exit(KSFT_PASS); } Am I the only person who's bothered by the fact that these don't actually return int? That bothered me to, but I couldn't be bothered to go read the manuals apparently to come up with a compelling argument :-) I also think the ksft_exit* routines should go ahead and increment the counters (at least optionally) so we don't have to call two functions. -- Darren Hart Intel Open Source Technology Center -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/