9d8bbd1c
李外
改升级前备份
|
1
|
#include "gen_linklist.h"
|
32fa5493
李外
移植快速下发完成,快速下发与17信...
|
2
|
#include "platform.h"
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
3
|
#include <stdio.h>
|
9d8bbd1c
李外
改升级前备份
|
4
5
6
|
// https://blog.csdn.net/swwlqw/article/details/22498833
|
9d8bbd1c
李外
改升级前备份
|
7
8
9
|
/*-------------- insert ------------------------------
* insert data to any postion
*/
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
10
11
12
|
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#undef container_of
#define container_of(ptr, type, member) ((type *)(((size_t)ptr) - offsetof(type, member)))
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
13
14
15
|
typedef struct gen_linknodebuf_STR{
unsigned char status;
|
39cd6b75
李外
V100.0.10
|
16
|
GenLinkNode node;
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
17
18
19
20
21
22
23
24
25
26
|
}GenLinkNodebuf;
GenLinkNodebuf gen_linknodebuf[100]={0};
GenLinkNode* gen_malloc(void)
{
for(unsigned short i = 0;i < 100;i++)
{
if(gen_linknodebuf[i].status == 0 ){
gen_linknodebuf[i].status = 1;
|
39cd6b75
李外
V100.0.10
|
27
|
return &gen_linknodebuf[i].node;
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
}
}
return NULL;
}
void gen_free(GenLinkNode * nodetemp)
{
GenLinkNodebuf * temp;
temp = container_of(nodetemp,struct gen_linknodebuf_STR,node);
temp->status = 0;
}
|
9d8bbd1c
李外
改升级前备份
|
44
45
|
unsigned char gen_linklist__insert(GenLinkList* const list,void *pele,unsigned short index)
{
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
46
47
48
|
uint8_t rtn=1;
PLATFORM_DISABLE_IRQ();
|
6570feac
李外
V100.0.9
|
49
50
|
if(list->length < index)
{
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
51
|
rtn = 0;
|
6570feac
李外
V100.0.9
|
52
|
}
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
53
54
|
else
{
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
55
|
//GenLinkNode *node = (GenLinkNode *)malloc(sizeof(GenLinkNode));
|
39cd6b75
李外
V100.0.10
|
56
|
GenLinkNode *node = gen_malloc();
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
57
58
59
60
61
62
63
64
|
if(node ==NULL)
{
rtn = 0;
}
else
{
node->next = NULL;
node->pdata = pele;
|
9d8bbd1c
李外
改升级前备份
|
65
|
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
66
67
|
GenLinkNode *pnode_tmp= list->front;
for(unsigned short i=0;i<index;i++){
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
68
|
if(pnode_tmp!=NULL)
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
69
70
71
72
73
74
75
|
pnode_tmp =pnode_tmp->next;
}//for
node->next =pnode_tmp->next;
pnode_tmp->next =node;
(list->length)++;
}
}
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
76
|
PLATFORM_ENABLE_IRQ();
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
77
|
return rtn;
|
9d8bbd1c
李外
改升级前备份
|
78
|
|
9d8bbd1c
李外
改升级前备份
|
79
80
81
82
83
84
85
|
}
/* -------------- detele ------------------------------
* detele node at any postion
*/
void* gen_linklist__detele(GenLinkList* const list,unsigned short index)
{
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
86
87
|
void * rtn = NULL;
PLATFORM_DISABLE_IRQ();
|
39cd6b75
李外
V100.0.10
|
88
|
if(list->length <= index)
|
6570feac
李外
V100.0.9
|
89
|
{
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
90
|
rtn = NULL;
|
6570feac
李外
V100.0.9
|
91
|
}
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
92
93
94
95
|
else
{
GenLinkNode *pnode_tmp= list->front;
for(unsigned short i=0;i<index;i++){
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
96
|
if(pnode_tmp!=NULL)
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
97
98
|
pnode_tmp =pnode_tmp->next;
}//for
|
9d8bbd1c
李外
改升级前备份
|
99
|
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
100
|
GenLinkNode *pnode_record= pnode_tmp->next;
|
39cd6b75
李外
V100.0.10
|
101
102
103
104
105
106
107
|
if(pnode_record!=NULL)
{
pnode_tmp->next = pnode_tmp->next->next;
rtn =pnode_record->pdata;
//free(pnode_record);
gen_free(pnode_record);
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
108
109
|
if(list->length)
(list->length)--;
|
39cd6b75
李外
V100.0.10
|
110
111
112
113
114
115
116
|
}
else{
rtn=NULL;
} //
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
117
|
}
|
a0293f87
李外
1、用新写法替换所有开关总中断的语句;
|
118
|
PLATFORM_ENABLE_IRQ();
|
eec54649
李外
链表 和 队列的中断保护带嵌套且用...
|
119
|
return rtn;
|
9d8bbd1c
李外
改升级前备份
|
120
121
122
123
124
125
126
|
}
/*-------------- get ele ------------------------------
* get element of index;
*/
void* gen_linklist__get_ele(GenLinkList* const list,unsigned short index)
{
|
39cd6b75
李外
V100.0.10
|
127
|
if( list->length <= index) return NULL;
|
9d8bbd1c
李外
改升级前备份
|
128
129
130
|
GenLinkNode *pnode_tmp= list->front->next;//diff with no head
for(unsigned short i=0;i<index;i++){
|
39cd6b75
李外
V100.0.10
|
131
|
// if(pnode_tmp->next != NULL)
|
9d8bbd1c
李外
改升级前备份
|
132
133
|
pnode_tmp =pnode_tmp->next;
}//for
|
39cd6b75
李外
V100.0.10
|
134
135
136
137
138
|
if(pnode_tmp != NULL)
return pnode_tmp->pdata;
else
return NULL;
|
9d8bbd1c
李外
改升级前备份
|
139
140
141
142
143
144
145
146
147
|
}
/*-------------- get len ------------------------------
* get length of linklist
*/
unsigned short gen_linklist__get_len(GenLinkList* const list)
{
return list->length;
}
|