projects/linux·blob master · refs

41 lines · 1.2 KiB

1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright 2003 H. Peter Anvin - All Rights Reserved
4 */
5#ifndef _PQ_IMPL_H
6#define _PQ_IMPL_H
7
8#include <linux/init.h>
9#include <linux/raid/pq_tables.h>
10
11/* Routine choices */
12struct raid6_calls {
13 const char *name;
14 void (*gen_syndrome)(int disks, size_t bytes, void **ptrs);
15 void (*xor_syndrome)(int disks, int start, int stop, size_t bytes,
16 void **ptrs);
17};
18
19struct raid6_recov_calls {
20 const char *name;
21 void (*data2)(int disks, size_t bytes, int faila, int failb,
22 void **ptrs);
23 void (*datap)(int disks, size_t bytes, int faila, void **ptrs);
24};
25
26void __init raid6_algo_add(const struct raid6_calls *algo);
27void __init raid6_algo_add_default(void);
28void __init raid6_recov_algo_add(const struct raid6_recov_calls *algo);
29
30/* for the kunit test */
31const struct raid6_calls *raid6_algo_find(unsigned int idx);
32const struct raid6_recov_calls *raid6_recov_algo_find(unsigned int idx);
33
34/* generic implementations */
35extern const struct raid6_calls raid6_intx1;
36extern const struct raid6_calls raid6_intx2;
37extern const struct raid6_calls raid6_intx4;
38extern const struct raid6_calls raid6_intx8;
39extern const struct raid6_recov_calls raid6_recov_intx1;
40
41#endif /* _PQ_IMPL_H */