From 3e587f356d5943a5ee69f4cd22dff65ae412d110 Mon Sep 17 00:00:00 2001 From: yuanQie Date: Tue, 20 May 2025 20:05:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9A=A1=20=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?udp=E7=A8=8B=E5=BA=8F=E6=A0=B8=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++ test/case52/src/testcase52.c | 94 +++++++++++++++++++++--------------- 2 files changed, 58 insertions(+), 40 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2cda61a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.out +.o +.vscode/ + diff --git a/test/case52/src/testcase52.c b/test/case52/src/testcase52.c index 968e571..7a47ffa 100755 --- a/test/case52/src/testcase52.c +++ b/test/case52/src/testcase52.c @@ -39,11 +39,14 @@ // Last Version: V1.0 //---------------------------------------------------- #include // udp +#include // 绑定CPU #include // thread #include // POSIX api #include // open() #include // MMAP //---------------------------------------------------- +#define _GNU_SOURCE + #define SERVER_IP_CASE52 "172.29.118.76" // IP #define SERVER_PORT_CASE52 28864 // 端口 #define BUFFER_SIZE_CASE52 16016 // 用户缓冲区 @@ -587,67 +590,78 @@ int32_t test_case(uint32_t argc, int32_t* argvp) //osp_set_task_orx(6, 95); /********************************************************* */ + pthread_attr_t udp_attr; // 定义线程包 + pthread_attr_init(&udp_attr); // 包初始化 + + cpu_set_t udp_cpuset; // CPU集合 + CPU_ZERO(&udp_cpuset); // 集合初始化 + CPU_SET(1, &udp_cpuset); // 选择核心2 + pthread_attr_setaffinity_np(&udp_attr, sizeof(udp_cpuset), &udp_cpuset); // 绑定 + + pthread_t thread_udp; - if (pthread_create(&thread_udp, NULL, handleUdpTransmission, NULL) != 0) + if (pthread_create(&thread_udp, &udp_attr, handleUdpTransmission, NULL) != 0) { printf("[SOCKET]:thread error!\n"); perror("pthread_create"); + pthread_attr_destroy(&udp_attr); exit(EXIT_FAILURE); } + pthread_attr_destroy(&udp_attr); // 销毁 /********************************************************* */ // 进入循环 while(1) { msg_transfer_queue_polling(); - if(1 == slot_ind_flag) - { - handler.inst_id = 0; - cu_flag = C_PLANE; - ret = msg_transfer_send_start(handler.value,cu_flag); + // if(1 == slot_ind_flag) + // { + // handler.inst_id = 0; + // cu_flag = C_PLANE; + // ret = msg_transfer_send_start(handler.value,cu_flag); - ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); - if ( SUCCESS != ret) { - UCP_PRINT_ERROR("0,c_plane alloc error\r\n"); - continue; - } + // ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + // if ( SUCCESS != ret) { + // UCP_PRINT_ERROR("0,c_plane alloc error\r\n"); + // continue; + // } - ptr = (uint8_t *)buf; - *(uint32_t*)(ptr + 0) = gu32_value; - *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; - *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; - *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + // ptr = (uint8_t *)buf; + // *(uint32_t*)(ptr + 0) = gu32_value; + // *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + // *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + // *(uint32_t*)(ptr + 12) = read_stc_local_timer(); - ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); - if ( SUCCESS != ret) { - UCP_PRINT_ERROR("0,c_plane send error\r\n"); - } + // ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + // if ( SUCCESS != ret) { + // UCP_PRINT_ERROR("0,c_plane send error\r\n"); + // } - ret = msg_transfer_send_end(handler.value,cu_flag); + // ret = msg_transfer_send_end(handler.value,cu_flag); - /************U_PLANE***************/ - cu_flag = U_PLANE; - ret = msg_transfer_send_start(handler.value,cu_flag); + // /************U_PLANE***************/ + // cu_flag = U_PLANE; + // ret = msg_transfer_send_start(handler.value,cu_flag); - ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); - if ( SUCCESS != ret) { - UCP_PRINT_ERROR("0,u_plane alloc error\r\n"); - continue; - } + // ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + // if ( SUCCESS != ret) { + // UCP_PRINT_ERROR("0,u_plane alloc error\r\n"); + // continue; + // } - ptr = (uint8_t *)buf; - *(uint32_t*)(ptr + 0) = gu32_value; - *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; - *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; - *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + // ptr = (uint8_t *)buf; + // *(uint32_t*)(ptr + 0) = gu32_value; + // *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + // *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + // *(uint32_t*)(ptr + 12) = read_stc_local_timer(); - ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); - if ( SUCCESS != ret) { - UCP_PRINT_ERROR("0,u_plane send error\r\n"); - } + // ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + // if ( SUCCESS != ret) { + // UCP_PRINT_ERROR("0,u_plane send error\r\n"); + // } - ret = msg_transfer_send_end(handler.value,cu_flag); - } + // ret = msg_transfer_send_end(handler.value,cu_flag); + // } } return 0; }