更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
main.c 文件参考

浏览源代码.

函数

int main (int argc, char **argv)
 

函数说明

◆ main()

int main ( int  argc,
char **  argv 
)

在文件 main.c44 行定义.

45{
46#define TWO_ARGS 2
47#define THREE_ARGS 3
48 int fd = open("/dev/perf", O_RDWR);
49 if (fd == -1) {
50 printf("Perf open failed.\n");
51 exit(EXIT_FAILURE);
52 }
53
54 if (argc == 1) {
55 PerfUsage();
56 } else if ((argc == TWO_ARGS) && strcmp(argv[1], "start") == 0) {
57 PerfStart(fd, 0);
58 } else if ((argc == THREE_ARGS) && strcmp(argv[1], "start") == 0) {
59 size_t id = strtoul(argv[THREE_ARGS - 1], NULL, 0);
60 PerfStart(fd, id);
61 } else if ((argc == TWO_ARGS) && strcmp(argv[1], "stop") == 0) {
62 PerfStop(fd);
63 } else if ((argc == THREE_ARGS) && strcmp(argv[1], "read") == 0) {
64 size_t size = strtoul(argv[THREE_ARGS - 1], NULL, 0);
65 if (size <= 0) {
66 goto EXIT:
67 }
68
69 char *buf = (char *)malloc(size);
70 if (buf != NULL) {
71 int len = PerfRead(fd, buf, size);
72 PerfPrintBuffer(buf, len);
73 free(buf);
74 buf = NULL;
75 }
76 } else if ((argc == TWO_ARGS) && strcmp(argv[1], "list") == 0) {
77 PerfList();
78 } else if ((argc >= THREE_ARGS) && strcmp(argv[1], "stat") == 0) {
79 PerfStat(fd, argc, argv);
80 } else if ((argc >= THREE_ARGS) && strcmp(argv[1], "record") == 0) {
81 PerfRecord(fd, argc, argv);
82 } else {
83 printf("Unsupported perf command.\n");
84 PerfUsage();
85 }
86
87EXIT:
88 close(fd);
89 return 0;
90}
void PerfUsage(void)
Definition: perf.c:44
void PerfStart(int fd, size_t sectionId)
Definition: perf.c:106
void PerfPrintBuffer(const char *buf, ssize_t num)
Definition: perf.c:70
ssize_t PerfRead(int fd, char *buf, size_t size)
Definition: perf.c:126
void PerfStop(int fd)
Definition: perf.c:111
void * malloc(size_t size)
动态分配内存块大小
Definition: malloc.c:81
void free(void *ptr)
释放ptr所指向的内存空间
Definition: malloc.c:66
void PerfList(void)
Definition: perf_list.c:121
void PerfRecord(int fd, int argc, char **argv)
Definition: perf_record.c:146
void PerfStat(int fd, int argc, char **argv)
Definition: perf_stat.c:107
void exit(int status)
Definition: stdlib.c:60
函数调用图: