| 274 | } |
| 275 | |
| 276 | void add_front(const T& obj) { |
| 277 | acquireLock(&lock); |
| 278 | |
| 279 | ListNode<T>* node; |
| 280 | if(!cache.get_length()){ |
| 281 | node = (ListNode<T>*)kmalloc(sizeof(ListNode<T>)); |
| 282 | } else { |
| 283 | node = cache.remove_at(0); |
| 284 | } |
| 285 | |
| 286 | node->obj = obj; |
| 287 | node->next = node->prev = nullptr; |
| 288 | |
| 289 | if (!back) { |
| 290 | back = node; |
| 291 | } |
| 292 | else if (front) { |
| 293 | front->prev = node; |
| 294 | node->next = front; |
| 295 | } |
| 296 | front = node; |
| 297 | num++; |
| 298 | |
| 299 | releaseLock(&lock); |
| 300 | } |
| 301 | |
| 302 | void insert(const T& obj, size_t pos){ |
| 303 | if(!num){ |
nothing calls this directly
no test coverage detected