Message ID | 20250203081734.2561009-1-a-limaye@ti.com |
---|---|
State | Superseded |
Delegated to: | Ryan Eatmon |
Headers | show |
Series | [meta-arago,master,v2] ti-test: Add mcrc64 test application | expand |
On 2/3/2025 2:17 AM, Aniket Limaye wrote: > From: Udit Kumar <u-kumar1@ti.com> > > Add mcrc64 test application recipe. > This application is documented at[0]. > > [0]: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j722s/10_01_00_04/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/MCRC64.html > > Signed-off-by: Udit Kumar <u-kumar1@ti.com> > Signed-off-by: Aniket Limaye <a-limaye@ti.com> > --- > v2: > * Denys: > - Add required SUMMARY variable as per https://docs.yoctoproject.org/next/contributor-guide/recipe-style-guide.html#required-variables > --- > .../recipes-core/packagegroups/ti-test.bb | 1 + > .../recipes-kernel/mcrc64/files/mcrc64.c | 114 ++++++++++++++++++ > .../recipes-kernel/mcrc64/mcrc64.bb | 18 +++ > 3 files changed, 133 insertions(+) > create mode 100644 meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c > create mode 100644 meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb > > diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb > index 814e3ea6..1399a267 100644 > --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb > +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb > @@ -55,6 +55,7 @@ TI_TEST_BASE = "\ > tcpdump \ > v4l-utils \ > yavta \ > + mcrc64 \ > " I spent a lot of time (j/k) getting the tool list in alphabetical order... Please move this to the correct place. Same comment for the scarthgap patch. > TI_TEST_EXTRAS = " \ > diff --git a/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c b/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c > new file mode 100644 > index 00000000..fc7a75d6 > --- /dev/null > +++ b/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c > @@ -0,0 +1,114 @@ > +/* > + * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/ > + * > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * > + * Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * > + * Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the > + * distribution. > + * > + * Neither the name of Texas Instruments Incorporated nor the names of > + * its contributors may be used to endorse or promote products derived > + * from this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + * > +*/ > + > +#include <unistd.h> > +#include <stdio.h> > +#include <stdlib.h> > +#include <sys/socket.h> > +#include <linux/if_alg.h> > +#include <string.h> > + > +#define BUFFER_SIZE 4096 > +#define SECTOR 4096 > + > +int main (int argc, char **argv) { > + > + int desc[2] = { -1, -1 }; > + > + struct sockaddr_alg sock = { > + .salg_family = AF_ALG, > + .salg_type = "hash", > + .salg_name = "crc64-iso3309" > + }; > + > + if ((desc[0] = socket(AF_ALG, SOCK_SEQPACKET, 0)) == -1 ) { > + perror("socket"); > + return -1; > + } > + > + if( bind(desc[0], (struct sockaddr *) &sock, sizeof(sock)) != 0 ) { > + perror("bind"); > + return -1; > + } > + > + if( (desc[1] = accept(desc[0], NULL, 0)) == -1 ) > + return -1; > + > + if (argc != 2 || strlen(argv[1]) == 0) { > + printf("Please specify filename\n"); > + return -1; // empty string > + } > + > + FILE* file; > + unsigned char *buffer; > + if(posix_memalign((void *)&buffer, SECTOR, BUFFER_SIZE)) { > + perror("posix_memalign failed"); > + return -1; > + } > + > + file = fopen(argv[1], "rb"); > + if(file == NULL) > + { > + printf("An error occured while opening file: %s\n", argv[1]); > + free(buffer); > + return -1; > + } > + > + while(!feof(file)) > + { > + unsigned int count = fread(buffer, sizeof(char), BUFFER_SIZE, file); > + if(ferror(file)) > + { > + printf("An error occurred while accessing the file: %s\n", argv[1]); > + fclose(file); > + free(buffer); > + return -1; > + } > + > + if (send(desc[1], buffer, count, MSG_MORE) != count) { > + free(buffer); > + return -1; > + } > + } > + > + long int crc64 = 0x0000000000000000; > + if(read(desc[1], &crc64, 8) != 8) { > + free(buffer); > + return -1; > + } > + > + printf("0x%llx\n", crc64); > + free(buffer); > + return 0; > +} > diff --git a/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb b/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb > new file mode 100644 > index 00000000..a707430d > --- /dev/null > +++ b/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb > @@ -0,0 +1,18 @@ > +SUMMARY = "Application to test MCRC64 driver" > +LICENSE = "BSD-3-Clause" > +LIC_FILES_CHKSUM = "file://mcrc64.c;beginline=1;endline=33;md5=070547e79367134fcfdf7fdb5e3ef7e3" > + > +SRC_URI = "file://mcrc64.c" > + > +S = "${WORKDIR}/sources" > +UNPACKDIR = "${S}" > + > +do_compile() { > + ${CC} ${CFLAGS} ${LDFLAGS} ${UNPACKDIR}/mcrc64.c -o mcrc64 > +} > + > + > +do_install() { > + install -d ${D}${bindir} > + install -m 0755 mcrc64 ${D}${bindir} > +}
diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb index 814e3ea6..1399a267 100644 --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb @@ -55,6 +55,7 @@ TI_TEST_BASE = "\ tcpdump \ v4l-utils \ yavta \ + mcrc64 \ " TI_TEST_EXTRAS = " \ diff --git a/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c b/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c new file mode 100644 index 00000000..fc7a75d6 --- /dev/null +++ b/meta-arago-test/recipes-kernel/mcrc64/files/mcrc64.c @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/socket.h> +#include <linux/if_alg.h> +#include <string.h> + +#define BUFFER_SIZE 4096 +#define SECTOR 4096 + +int main (int argc, char **argv) { + + int desc[2] = { -1, -1 }; + + struct sockaddr_alg sock = { + .salg_family = AF_ALG, + .salg_type = "hash", + .salg_name = "crc64-iso3309" + }; + + if ((desc[0] = socket(AF_ALG, SOCK_SEQPACKET, 0)) == -1 ) { + perror("socket"); + return -1; + } + + if( bind(desc[0], (struct sockaddr *) &sock, sizeof(sock)) != 0 ) { + perror("bind"); + return -1; + } + + if( (desc[1] = accept(desc[0], NULL, 0)) == -1 ) + return -1; + + if (argc != 2 || strlen(argv[1]) == 0) { + printf("Please specify filename\n"); + return -1; // empty string + } + + FILE* file; + unsigned char *buffer; + if(posix_memalign((void *)&buffer, SECTOR, BUFFER_SIZE)) { + perror("posix_memalign failed"); + return -1; + } + + file = fopen(argv[1], "rb"); + if(file == NULL) + { + printf("An error occured while opening file: %s\n", argv[1]); + free(buffer); + return -1; + } + + while(!feof(file)) + { + unsigned int count = fread(buffer, sizeof(char), BUFFER_SIZE, file); + if(ferror(file)) + { + printf("An error occurred while accessing the file: %s\n", argv[1]); + fclose(file); + free(buffer); + return -1; + } + + if (send(desc[1], buffer, count, MSG_MORE) != count) { + free(buffer); + return -1; + } + } + + long int crc64 = 0x0000000000000000; + if(read(desc[1], &crc64, 8) != 8) { + free(buffer); + return -1; + } + + printf("0x%llx\n", crc64); + free(buffer); + return 0; +} diff --git a/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb b/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb new file mode 100644 index 00000000..a707430d --- /dev/null +++ b/meta-arago-test/recipes-kernel/mcrc64/mcrc64.bb @@ -0,0 +1,18 @@ +SUMMARY = "Application to test MCRC64 driver" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://mcrc64.c;beginline=1;endline=33;md5=070547e79367134fcfdf7fdb5e3ef7e3" + +SRC_URI = "file://mcrc64.c" + +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" + +do_compile() { + ${CC} ${CFLAGS} ${LDFLAGS} ${UNPACKDIR}/mcrc64.c -o mcrc64 +} + + +do_install() { + install -d ${D}${bindir} + install -m 0755 mcrc64 ${D}${bindir} +}