// SPDX-License-Identifier: GPL-2.0
/* Copyright (C) 2021. Huawei Technologies Co., Ltd */
#include <linux/types.h>
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>

#define STRNCMP_STR_SZ 4096

/* Will be updated by benchmark before program loading */
const volatile unsigned int cmp_str_len = 1;
const char target[STRNCMP_STR_SZ];

long hits = 0;
char str[STRNCMP_STR_SZ];

char _license[] SEC("license") = "GPL";

static __always_inline int local_strncmp(const char *s1, unsigned int sz,
					 const char *s2)
{
	int ret = 0;
	unsigned int i;

	for (i = 0; i < sz; i++) {
		/* E.g. 0xff > 0x31 */
		ret = (unsigned char)s1[i] - (unsigned char)s2[i];
		if (ret || !s1[i])
			break;
	}

	return ret;
}

SEC("tp/syscalls/sys_enter_getpgid")
int strncmp_no_helper(void *ctx)
{
	if (local_strncmp(str, cmp_str_len + 1, target) < 0)
		__sync_add_and_fetch(&hits, 1);
	return 0;
}

SEC("tp/syscalls/sys_enter_getpgid")
int strncmp_helper(void *ctx)
{
	if (bpf_strncmp(str, cmp_str_len + 1, target) < 0)
		__sync_add_and_fetch(&hits, 1);
	return 0;
}

