/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright 2003 H. Peter Anvin - All Rights Reserved */ #ifndef _PQ_IMPL_H #define _PQ_IMPL_H #include #include /* Routine choices */ struct raid6_calls { const char *name; void (*gen_syndrome)(int disks, size_t bytes, void **ptrs); void (*xor_syndrome)(int disks, int start, int stop, size_t bytes, void **ptrs); }; struct raid6_recov_calls { const char *name; void (*data2)(int disks, size_t bytes, int faila, int failb, void **ptrs); void (*datap)(int disks, size_t bytes, int faila, void **ptrs); }; void __init raid6_algo_add(const struct raid6_calls *algo); void __init raid6_algo_add_default(void); void __init raid6_recov_algo_add(const struct raid6_recov_calls *algo); /* for the kunit test */ const struct raid6_calls *raid6_algo_find(unsigned int idx); const struct raid6_recov_calls *raid6_recov_algo_find(unsigned int idx); /* generic implementations */ extern const struct raid6_calls raid6_intx1; extern const struct raid6_calls raid6_intx2; extern const struct raid6_calls raid6_intx4; extern const struct raid6_calls raid6_intx8; extern const struct raid6_recov_calls raid6_recov_intx1; #endif /* _PQ_IMPL_H */