[LTP] [PATCH v1] float: convert to new LTP API
Hongchen Zhang
zhanghongchen@loongson.cn
Wed Jul 27 03:35:40 CEST 2022
On 2022/7/26 下午7:55, Petr Vorel wrote:
> Hi Hongchen,
>
> thank you for your effort, but much more needs to be done.
>
> Code in whole project (all sources in testcases/misc/math/float) is very old and
> IMHO weird. I still wonder why testing float / math functions requires creating
> files, using pthread (in thread_code.c), ... It'd be worth to have look whether
> current approach is really useful before spending time to rewrite it.
>
> Some notes to your rewrite. main.c and thread_code.c should be turned into
> header file (e.g. float.h) with functions being static inline. Because
> including C files is no-go.
>
>> testcases/misc/math/float/main.c | 446 +++++++++------------------------------
> ...
>> -const int nb_func = NB_FUNC;
>> +static char *Dopt, *lopt, *nopt, *vopt;
>> +static struct tst_option opt[] = {
>> + {"D:", &Dopt, "DATA directory's absolute path"},
> IMHO this should not be needed, everything should be in test temporary
> directory, there is no need to put it elsewhere.
>> + {"l:", &lopt, "set number of loops per function"},
>> + {"n:", &nopt, "set number of threads per function"},
>> + {"v", &vopt, "debug level"},
> I'd get rid of the debugging (important things should be always printed).
>
>> + {}
>> +};
>
>> int generate(char *datadir, char *bin_path)
>> {
>> char *cmdline;
>> char *fmt = "cd %s; %s/%s %s";
>
>> - cmdline = malloc(2 * strlen(bin_path) + strlen(datadir) + strlen(GENERATOR) + strlen(fmt));
>> + cmdline = malloc(2 * strlen(bin_path) + strlen(datadir) +
>> + strlen(GENERATOR) + strlen(fmt));
>> if (cmdline == NULL)
>> return (1);
> There is SAFE_MALLOC(), no need to check for NULL.
>
>> sprintf(cmdline, fmt, datadir, bin_path, GENERATOR, bin_path);
>> @@ -93,345 +55,137 @@ int generate(char *datadir, char *bin_path)
>> return (0);
>
> Also code style suggests it's very old. brackets around integer in return is
> quite strange (i.e. "return (0);").
>> }
>
>
>> ltproot = getenv("LTPROOT");
>> if (ltproot == NULL || strlen(ltproot) == 0) {
>> - tst_brkm(TBROK, NULL,
>> + tst_brk(TBROK,
>> "You must set $LTPROOT before executing this test");
>
> generate() function which runs binary should be replaced with tst_cmd().
> IMHO we don't need to check for $LTPROOT, because we expect PATH to be set
> correctly.
>
>> }
>> bin_path = malloc(strlen(ltproot) + 16);
>> if (bin_path == NULL) {
> SAFE_MALLOC() (in many places)
>> - tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
>> + tst_brk(TBROK, "malloc failed");
>> }
> ...
>
>> +void run(unsigned int n)
>> +{
>> + void *exit_value;
>> + pthread_attr_t newattr;
>> + size_t stacksize = 2093056;
> I'm not sure if this is portable for all archs and I'd use #define at the top.
>
> ...
>> +static struct tst_test test = {
>> + .test = run,
>> + .setup = setup,
>> + .options = opt,
>> + .needs_root = 1,
>> + .needs_tmpdir = 1,
>> + .tcnt = NB_FUNC,
>> +};
>
> struct tst_test test should be defined in float*.c tests, not in this
> common file included by tests.
>
> Kind regards,
> Petr
>
Hi Petr,
Thanks for you review,I will change the code as you said later.
Best Regards.
Hongchen Zhang
More information about the ltp
mailing list