| 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 |   }GenLinkNodebuf;
  
 | 
| 1e904e01  李外
 
V100.0.23 | 19 |   GenLinkNodebuf gen_linknodebuf[500]={0};
 | 
| a0293f87  李外
 
1、用新写法替换所有开关总中断的语句; | 20
21
22 |   
  GenLinkNode* gen_malloc(void)
  {
 | 
| 1e904e01  李外
 
V100.0.23 | 23 |   		for(unsigned short i = 0;i < 500;i++)
 | 
| a0293f87  李外
 
1、用新写法替换所有开关总中断的语句; | 24
25
26 |   		{
  					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;
  }
 |