From 2d466932395c3261d0c11d9792b036cf53792a81 Mon Sep 17 00:00:00 2001 From: Lvwenxuan <1666510747@qq.com> Date: Wed, 8 Jan 2025 20:37:05 +0800 Subject: [PATCH] =?UTF-8?q?#include=20=20//=20=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E6=A0=87=E5=87=86=E8=BE=93=E5=85=A5=E8=BE=93=E5=87=BA=E5=BA=93?= =?UTF-8?q?=20#include=20=20//=20=E5=BC=95=E5=85=A5POSIX?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9FAPI=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E5=AF=B9POSIX=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9FAPI?= =?UTF-8?q?=E7=9A=84=E8=AE=BF=E9=97=AE=20#include=20=20//=20?= =?UTF-8?q?=E5=BC=95=E5=85=A5C=E6=A0=87=E5=87=86=E5=BA=93=E5=87=BD?= =?UTF-8?q?=E6=95=B0=20#include=20=20//=20=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=A7=E5=88=B6=E9=80=89=E9=A1=B9=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E4=BA=8Eopen=E7=AD=89=E5=87=BD=E6=95=B0=20#include=20?= =?UTF-8?q?=20//=20=E5=BC=95=E5=85=A5=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=87=BD=E6=95=B0=20#include=20=20//=20=E5=BC=95=E5=85=A5Google=20Test=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=20#include=20"It=5Fprocess=5Fplimits.h"=20//=20=E5=BC=95?= =?UTF-8?q?=E5=85=A5=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=B4=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E8=83=BD=E5=8C=85=E5=90=AB=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=89=80=E9=9C=80=E7=9A=84=E5=A3=B0=E6=98=8E=E6=88=96=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // 定义测试函数ItProcessPlimitsDevices001 void ItProcessPlimitsDevices001(void) { int fd; // 声明文件描述符变量 int ret; // 声明返回值变量 mode_t mode; // 声明文件模式变量(未初始化) char writeBuf[8]; // 声明写入缓冲区,大小为8字节 std::string test_dev = "/dev/hi_mipi"; // 定义测试设备文件路径 std::string path = "/proc/plimits/test"; // 定义/proc/plimits/test目录路径 std::string procsTestPath = "/proc/plimits/test/plimits.procs"; // 定义进程限制文件路径 // 尝试创建目录,但mode未初始化,此处存在潜在问题 ret = mkdir(path.c_str(), S_IFDIR | mode); // S_IFDIR应为0(对于mkdir来说,通常只使用权限位) ASSERT_EQ(ret, 0); // 断言创建目录操作成功 // 使用memset_s安全地清零writeBuf (void)memset_s(writeBuf, sizeof(writeBuf), 0, sizeof(writeBuf)); // 将当前进程ID格式化为字符串并存储到writeBuf中 ret = sprintf_s(writeBuf, sizeof(writeBuf), "%d", getpid()); ASSERT_NE(ret, -1); // 断言格式化操作成功(非-1) // 尝试将进程ID写入到plimits.procs文件中,但WriteFile函数未定义,可能是自定义函数 ret = WriteFile(procsTestPath.c_str(), writeBuf); ASSERT_NE(ret, 0); // 断言写入操作失败(此处的断言逻辑可能需要根据WriteFile的实现调整) // 尝试以读写和创建模式打开/dev/hi_mipi设备文件 fd = open(test_dev.c_str(), O_RDWR|O_CREAT); ASSERT_NE(fd, -1); // 断言打开文件操作成功(文件描述符不为-1) // 关闭文件描述符 (void)close(fd); // 尝试删除之前创建的目录 ret = rmdir(path.c_str()); ASSERT_EQ(ret, 0); // 断言删除目录操作成功 } --- .../smoke/It_process_plimits_devices_001.cpp | 60 ++++++++------ .../smoke/It_process_plimits_devices_004.cpp | 71 ++++++++-------- .../smoke/It_process_plimits_devices_005.cpp | 72 +++++++++-------- .../smoke/It_process_plimits_devices_006.cpp | 72 +++++++++-------- .../smoke/It_process_plimits_devices_007.cpp | 77 ++++++++++-------- .../smoke/It_process_plimits_devices_008.cpp | 80 +++++++++++-------- 6 files changed, 246 insertions(+), 186 deletions(-) diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_001.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_001.cpp index f4b9d07..662b3d7 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_001.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_001.cpp @@ -28,38 +28,46 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼ +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķ +#include // C׼⺯ +#include // ļѡopenȺ +#include // ַ +#include // Google TestܣڵԪ +#include "It_process_plimits.h" // Զͷļܰ + +// ԺItProcessPlimitsDevices001 void ItProcessPlimitsDevices001(void) { - int fd; - int ret; - mode_t mode; - char writeBuf[8]; - std::string test_dev = "/dev/hi_mipi"; - std::string path = "/proc/plimits/test"; - std::string procsTestPath = "/proc/plimits/test/plimits.procs"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - + int fd; // ļ + int ret; // ֵ + mode_t mode; // ļģʽδʼ + char writeBuf[8]; // д뻺СΪ8ֽ + std::string test_dev = "/dev/hi_mipi"; // 豸ļ· + std::string path = "/proc/plimits/test"; // /proc/plimits/testĿ¼· + std::string procsTestPath = "/proc/plimits/test/plimits.procs"; // ļ· + + // ԴĿ¼modeδʼ˴DZ + ret = mkdir(path.c_str(), S_IFDIR | mode); // S_IFDIRӦΪ0mkdir˵ֻͨʹȨλ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹ + + // ʹmemset_sȫwriteBuf (void)memset_s(writeBuf, sizeof(writeBuf), 0, sizeof(writeBuf)); + // ǰIDʽΪַ洢writeBuf ret = sprintf_s(writeBuf, sizeof(writeBuf), "%d", getpid()); - ASSERT_NE(ret, -1); - + ASSERT_NE(ret, -1); // Ըʽɹ-1 + + // ԽIDд뵽plimits.procsļУWriteFileδ壬Զ庯 ret = WriteFile(procsTestPath.c_str(), writeBuf); - ASSERT_NE(ret, 0); - + ASSERT_NE(ret, 0); // дʧܣ˴Ķ߼ҪWriteFileʵֵ + + // Զдʹģʽ/dev/hi_mipi豸ļ fd = open(test_dev.c_str(), O_RDWR|O_CREAT); - ASSERT_NE(fd, -1); + ASSERT_NE(fd, -1); // ԴļɹļΪ-1 + // رļ (void)close(fd); - + + // ɾ֮ǰĿ¼ ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + ASSERT_EQ(ret, 0); // ɾĿ¼ɹ } diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_004.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_004.cpp index 94a9224..14a1573 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_004.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_004.cpp @@ -28,38 +28,45 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼⣬ṩļĹ +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķʣgetpid(), mkdir(), rmdir() +#include // C׼⺯exit(), malloc(), free() +#include // ļѡopen()ļģʽ +#include // ַmemset(), strcmp() +#include // Google TestܣڵԪԣṩԺASSERT_EQ(), ASSERT_NE() +#include "It_process_plimits.h" // Զͷļܰ壬WriteFile() + +// ԺItProcessPlimitsDevices004 void ItProcessPlimitsDevices004(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/hi_mipi"; - std::string device_a = "a * rwm"; - std::string device_a_m = "a * m"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - ret = WriteFile(devicesAllowPath.c_str(), device_a_m.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_CREAT); - ASSERT_NE(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // ļڴ洢ļ + int ret; // ֵڴ洢õĽ + mode_t mode; // ļģʽָļȨޣ˴δʼDZ⣩ + std::string test_dev = "/dev/hi_mipi"; // 豸ļ· + std::string device_a = "a * rwm"; // 豸ʿƹû(a *) 豸жд(rwm) + std::string device_a_m = "a * m"; // 豸ʿƹû(a *) 豸й(m) + std::string path = "/proc/plimits/test"; // Ŀ¼· + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 豸ܾбļ· + std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; // 豸бļ· + + // ԴĿ¼modeδʼ˴DZ⣬ӦֱʹȨλ0755 + ret = mkdir(path.c_str(), S_IFDIR | mode); // Դ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹֵΪ0 + + // Խ豸ܾдdevices.denyļWriteFileδڴж壬Զ庯 + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // дܾ + ASSERT_NE(ret, -1); // дɹֵΪ-1 + // Խ豸дdevices.allowļ + ret = WriteFile(devicesAllowPath.c_str(), device_a_m.c_str()); // д + ASSERT_NE(ret, -1); // дɹֵΪ-1 + + // Դģʽ򿪲豸ļע˴ûָO_RDWR޷д + fd = open(test_dev.c_str(), O_CREAT); // Դ/dev/hi_mipi豸ļ + ASSERT_NE(fd, -1); // ԴļɹļΪ-1 + // رļͷԴ + (void)close(fd); // رļ + + // ɾ֮ǰĿ¼ + ret = rmdir(path.c_str()); // ɾ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ɾĿ¼ɹֵΪ0 } diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_005.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_005.cpp index 0464ef5..89b93ca 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_005.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_005.cpp @@ -28,38 +28,46 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼⣬ṩļĹ +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķʣmkdir(), rmdir() +#include // C׼⺯exit(), malloc(), free()ȣδֱʹã +#include // ļѡopen()ļģʽ +#include // ַmemset(), strcmp()ȣδֱʹã +#include // Google TestܣڵԪԣṩԺASSERT_EQ(), ASSERT_NE() +#include "It_process_plimits.h" // Զͷļܰ壬WriteFile() + +// ԺItProcessPlimitsDevices005 void ItProcessPlimitsDevices005(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/mem"; - std::string device_a = "a * rwm"; - std::string device_c = "c * rwm"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - ret = WriteFile(devicesAllowPath.c_str(), device_c.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_RDWR|O_CREAT); - ASSERT_NE(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // ļڴ洢ļ + int ret; // ֵڴ洢õĽ + mode_t mode; // ļģʽ˴δʼDZ + std::string test_dev = "/dev/mem"; // 豸ļ·/dev/memڴ豸ļ + std::string device_a = "a * rwm"; // 豸ʿƹû(a *) 豸жд(rwm) + std::string device_c = "c * rwm"; // 豸ʿƹ򣬵cܱʾijضû飬庬ȡϵͳ + std::string path = "/proc/plimits/test"; // Ŀ¼· + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 豸ܾбļ· + std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; // 豸бļ· + + // ԴĿ¼modeδʼ˴DZ⣬ӦֱʹȨλ0755 + // ע⣺S_IFDIRmkdirĵڶʱͨҪΪmkdirĬϴĿ¼ + ret = mkdir(path.c_str(), S_IFDIR | mode); // Դ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹֵΪ0 + + // Խ豸ܾдdevices.denyļWriteFileδڴж壬Զ庯 + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // дܾ򣬽ֹûд/dev/mem˹device_cǣ + ASSERT_NE(ret, -1); // дɹֵΪ-1 + // Խ豸дdevices.allowļ + ret = WriteFile(devicesAllowPath.c_str(), device_c.c_str()); // дijû(c)д/dev/mem + ASSERT_NE(ret, -1); // дɹֵΪ-1 + + // Զдģʽ򿪲豸ļ/dev/mem + fd = open(test_dev.c_str(), O_RDWR|O_CREAT); // Դ/dev/mem豸ļO_RDWRʾдģʽO_CREATʾļ򴴽 + ASSERT_NE(fd, -1); // ԴļɹļΪ-1 + // رļͷԴ + (void)close(fd); // رļ + + // ɾ֮ǰĿ¼ + ret = rmdir(path.c_str()); // ɾ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ɾĿ¼ɹֵΪ0 } diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_006.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_006.cpp index 1b76142..5bf640f 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_006.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_006.cpp @@ -28,38 +28,46 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼⣬ṩļĹ +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķʣmkdir(), rmdir() +#include // C׼⺯exit(), malloc(), free()ȣδֱʹã +#include // ļѡopen()ļģʽ +#include // ַmemset(), strcmp()ȣδֱʹã +#include // Google TestܣڵԪԣṩԺASSERT_EQ(), ASSERT_NE() +#include "It_process_plimits.h" // Զͷļܰ壬WriteFile() + +// ԺItProcessPlimitsDevices006 void ItProcessPlimitsDevices006(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/mem"; - std::string device_a = "a * rwm"; - std::string device_c_r = "c * r"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - ret = WriteFile(devicesAllowPath.c_str(), device_c_r.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_RDONLY); - ASSERT_NE(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // ļڴ洢ļ + int ret; // ֵڴ洢õĽ + mode_t mode; // ļģʽ˴δʼDZ + std::string test_dev = "/dev/mem"; // 豸ļ·/dev/memڴ豸ļ + std::string device_a = "a * rwm"; // 豸ʿƹû(a *) 豸ждڴ(rwm) + std::string device_c_r = "c * r"; // 豸ʿƹijû(c *) ڴ(r) + std::string path = "/proc/plimits/test"; // Ŀ¼· + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 豸ܾбļ· + std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; // 豸бļ· + + // ԴĿ¼modeδʼ˴DZ⣬ӦֱʹȨλ0755 + // ע⣺S_IFDIRmkdirĵڶʱͨҪΪmkdirĬϴĿ¼ + ret = mkdir(path.c_str(), S_IFDIR | mode); // Դ/proc/plimits/testĿ¼modeδʼܵΪȷ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹֵΪ0 + + // Խ豸ܾдdevices.denyļWriteFileδڴж壬Զ庯 + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // дܾ򣬽ֹû(a *)д/dev/mem˹device_c_rǣϵͳִ֧าǣ + ASSERT_NE(ret, -1); // дɹֵΪ-1 + // Խ豸дdevices.allowļ + ret = WriteFile(devicesAllowPath.c_str(), device_c_r.c_str()); // дijû(c *)/dev/mem + ASSERT_NE(ret, -1); // дɹֵΪ-1 + + // ֻģʽ򿪲豸ļ/dev/mem + fd = open(test_dev.c_str(), O_RDONLY); // Դ/dev/mem豸ļO_RDONLYʾֻģʽ + ASSERT_NE(fd, -1); // ԴļɹļΪ-1֮ǰĹӦóɹΪ˶ + // رļͷԴ + (void)close(fd); // رļ + + // ɾ֮ǰĿ¼ + ret = rmdir(path.c_str()); // ɾ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ɾĿ¼ɹֵΪ0 } diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_007.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_007.cpp index cd75c6d..f02885e 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_007.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_007.cpp @@ -28,38 +28,51 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼⣬ṩļĹ +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķʣmkdir(), rmdir() +#include // C׼⺯exit(), malloc(), free()ȣδֱʹã +#include // ļѡopen()ļģʽ +#include // ַmemset(), strcmp()ȣδֱʹã +#include // Google TestܣڵԪԣṩԺASSERT_EQ(), ASSERT_NE() +#include "It_process_plimits.h" // Զͷļܰ壬WriteFile() + +// ԺItProcessPlimitsDevices007 void ItProcessPlimitsDevices007(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/mem"; - std::string device_a = "a * rwm"; - std::string device_c_w = "c * w"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - ret = WriteFile(devicesAllowPath.c_str(), device_c_w.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_WRONLY); - ASSERT_NE(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // ļڴ洢ļ + int ret; // ֵڴ洢õĽ + mode_t mode; // ļģʽ˴δʼDZ⣨ӦmkdirȨλһʼ + std::string test_dev = "/dev/mem"; // 豸ļ·/dev/memڴ豸ļ + std::string device_a = "a * rwm"; // 豸ʿƹû(a *) 豸ждڴ(rwm) + std::string device_c_w = "c * w"; // 豸ʿƹijû(c *) дڴ(w) + std::string path = "/proc/plimits/test"; // Ŀ¼· + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 豸ܾбļ· + std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; // 豸бļ· + + // ԴĿ¼modeδʼ˴DZ⣬ӦֱʹȨλ0755 + // ע⣺S_IFDIRmkdirĵڶʱͨҪΪmkdirĬϴĿ¼ + // ȷӦǣret = mkdir(path.c_str(), 0755); Ҫ755Ȩޣ + ret = mkdir(path.c_str(), S_IFDIR | mode); // Դ/proc/plimits/testĿ¼modeδʼܵΪȷ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹֵΪ0 + + // Խ豸ܾдdevices.denyļWriteFileδڴж壬Զ庯 + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // дܾ򣬽ֹû(a *)ijЩܻᱻdevicesAllowPathеĹ򸲸ǣ + ASSERT_NE(ret, -1); // дɹֵΪ-1 + // Խ豸дdevices.allowļ + ret = WriteFile(devicesAllowPath.c_str(), device_c_w.c_str()); // дijû(c *)д/dev/mem + ASSERT_NE(ret, -1); // дɹֵΪ-1 + + // ֻдģʽ򿪲豸ļ/dev/mem + // ע⣺ͨ/dev/memͨûдҴ˴Ĺÿܴڳͻdenyrwmallowнw + // ݲĿģעǷʿƹӦãʵдijɹ + fd = open(test_dev.c_str(), O_WRONLY); // Դ/dev/mem豸ļO_WRONLYʾֻдģʽ + // ˴ԿʧܣΪ/dev/memͨͨûдҼʹҲΪϵͳԻȨʧ + // ڲԹעǷʿ߼ϵͳԣ磬ڲԻ/dev/memȨޱſ + ASSERT_NE(fd, -1); // ԴļɹļΪ-1ܴʵʲеIJƥ + // رļͷԴ + (void)close(fd); // رļ + + // ɾ֮ǰĿ¼ + ret = rmdir(path.c_str()); // ɾ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ɾĿ¼ɹֵΪ0 } diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_008.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_008.cpp index 4e3b19f..4fef43c 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_008.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_008.cpp @@ -28,38 +28,54 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // ׼⣬ṩļĹܣδֱʹã +#include // POSIXϵͳAPIṩPOSIXϵͳAPIķʣmkdir(), rmdir() +#include // C׼⺯exit(), malloc(), free()ȣδֱʹã +#include // ļѡopen()ļģʽ +#include // ַmemset(), strcmp()ȣδֱʹã +#include // Google TestܣڵԪԣṩԺASSERT_EQ(), ASSERT_NE() +#include "It_process_plimits.h" // Զͷļܰ壬WriteFile() + +// ԺItProcessPlimitsDevices008 void ItProcessPlimitsDevices008(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/mem"; - std::string device_a = "a * rwm"; - std::string device_c_m = "c * rm"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - ret = WriteFile(devicesAllowPath.c_str(), device_c_m.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_CREAT, O_RDONLY); - ASSERT_NE(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // ļڴ洢ļ + int ret; // ֵڴ洢õĽ + mode_t mode; // ļģʽ˴δʼDZ⣨ӦmkdirȨλһʼ + std::string test_dev = "/dev/mem"; // 豸ļ·/dev/memڴ豸ļ + std::string device_a = "a * rwm"; // 豸ʿƹû(a *) 豸ждڴ(rwm) + std::string device_c_m = "c * rm"; // 豸ʿƹijû(c *) 豸жڴ(r)޸ڴ(m)дw + std::string path = "/proc/plimits/test"; // Ŀ¼· + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 豸ܾбļ· + std::string devicesAllowPath = "/proc/plimits/test/devices.allow"; // 豸бļ· + + // ԴĿ¼modeδʼ˴DZ⣬ӦֱʹȨλ0755 + // ע⣺S_IFDIRmkdirĵڶʱͨҪΪmkdirĬϴĿ¼ + // ȷӦǣret = mkdir(path.c_str(), 0755); Ҫ755Ȩޣ + // ڲĿģǼעĿ¼ĴǾȨ + ret = mkdir(path.c_str(), S_IFDIR | mode); // Դ/proc/plimits/testĿ¼modeδʼܵΪȷ + ASSERT_EQ(ret, 0); // ԴĿ¼ɹֵΪ0 + + // Խ豸ܾдdevices.denyļWriteFileδڴж壬Զ庯 + // ע⣺ľܾʵϿܱ򸲸ǣΪͨȼ + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // дܾ򣬽ֹԽֹܱǣû(a *)ijЩ + ASSERT_NE(ret, -1); // дɹֵΪ-1 + // Խ豸дdevices.allowļ + ret = WriteFile(devicesAllowPath.c_str(), device_c_m.c_str()); // дijû(c *)жڴ(r)޸ڴ(m) + ASSERT_NE(ret, -1); // дɹֵΪ-1 + + // Դֻģʽ򿪲豸ļ/dev/mem + // ע⣺O_CREAT־DzҪģΪDzҪ/dev/memļ + // O_RDONLYʾֻģʽ/dev/memͨͨûϵͳԱſ + // ˴ԴļҪΪ˲Էʿ߼ʵʶ + fd = open(test_dev.c_str(), O_CREAT, O_RDONLY); // Դ򿪣ܴӦô/dev/mem/dev/mem豸ļO_RDONLYʾֻģʽ + // ˴ԿʧܣΪ/dev/memͨͨû + // ڲԹעǷʿ߼Ҽϵͳԣ磬ڲԻ/dev/memȨޱſ + ASSERT_NE(fd, -1); // ԴļɹļΪ-1ܴʵʲеIJƥ + // رļͷԴ + (void)close(fd); // رļ + + // ɾ֮ǰĿ¼ + ret = rmdir(path.c_str()); // ɾ/proc/plimits/testĿ¼ + ASSERT_EQ(ret, 0); // ɾĿ¼ɹֵΪ0 }