/* SPDX-License-Identifier: GPL-2.0-or-later
 * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
 * Copyright (c) 2009-2016 Cyril Hrubis chrubis@suse.cz
 */

#ifndef TST_KVERCMP_H__
#define TST_KVERCMP_H__

/*
 * The same as tst_kvercmp() but running kernel version is passed as parameter
 * instead of utilizing uname().
 */
int tst_kvcmp(const char *cur_kver, int r1, int r2, int r3);

/*
 * Parsers string into three integer version.
 */
int tst_parse_kver(const char *str_kver, int *v1, int *v2, int *v3);

/*
 * Returns distribution name parsed from kernel version string or NULL.
 */
const char *tst_kvcmp_distname(const char *cur_kver);

/*
 * Compares versions up to five version numbers long.
 */
int tst_kvexcmp(const char *tst_exv, const char *cur_kver);

/*
 * Compare given kernel version with currently running kernel.
 *
 * Returns negative if older, 0 if the same and positive if newer.
 */
int tst_kvercmp(int r1, int r2, int r3);

struct tst_kern_exv {
	char *dist_name;
	char *extra_ver;
};

int tst_kvercmp2(int r1, int r2, int r3, struct tst_kern_exv *vers);

#endif	/* TST_KVERCMP_H__ */
