forked from xuos/xiuos
				
			delete no need
This commit is contained in:
		
							parent
							
								
									5a02b89ffc
								
							
						
					
					
						commit
						339ea93b09
					
				| 
						 | 
					@ -24,7 +24,7 @@ endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifeq ($(CONFIG_ADD_XIZI_FEATURES),y)
 | 
					ifeq ($(CONFIG_ADD_XIZI_FEATURES),y)
 | 
				
			||||||
    SRC_FILES := test_shell.c
 | 
					    SRC_FILES := test_shell.c
 | 
				
			||||||
    SRC_FILES += test_hash.c
 | 
					    
 | 
				
			||||||
    ifeq ($(CONFIG_USER_TEST_ADC),y)
 | 
					    ifeq ($(CONFIG_USER_TEST_ADC),y)
 | 
				
			||||||
        SRC_FILES += test_adc.c
 | 
					        SRC_FILES += test_adc.c
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,44 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
* Copyright (c) 2020 AIIT XUOS Lab
 | 
					 | 
				
			||||||
* XiUOS is licensed under Mulan PSL v2.
 | 
					 | 
				
			||||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
 | 
					 | 
				
			||||||
* You may obtain a copy of Mulan PSL v2 at:
 | 
					 | 
				
			||||||
*        http://license.coscl.org.cn/MulanPSL2
 | 
					 | 
				
			||||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | 
					 | 
				
			||||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | 
					 | 
				
			||||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | 
					 | 
				
			||||||
* See the Mulan PSL v2 for more details.
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
* @file:    test_ethernet.c
 | 
					 | 
				
			||||||
* @brief:   a application of ethernet function
 | 
					 | 
				
			||||||
* @version: 1.1
 | 
					 | 
				
			||||||
* @author:  AIIT XUOS Lab
 | 
					 | 
				
			||||||
* @date:    2022/12/17
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
#include <stdio.h>
 | 
					 | 
				
			||||||
#include <string.h>
 | 
					 | 
				
			||||||
#include <transform.h>
 | 
					 | 
				
			||||||
#include <xs_hash.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int Testhash(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    Element a[]={{12,1},{2,2},{31,3},{45,4},{8,5},{45,5}};
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	int n = sizeof(a)/sizeof(Element);
 | 
					 | 
				
			||||||
	Hash_table *h = Creat_Table(n);
 | 
					 | 
				
			||||||
	int i = 0;
 | 
					 | 
				
			||||||
	for(i = 0 ; i<n ; i++)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		Insert(h,a[i]);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	print_Table(h);		// 打印哈希表 
 | 
					 | 
				
			||||||
	printf("%d\n\n", lookup(h,12)->data->value);	//查找key值为12的Element  
 | 
					 | 
				
			||||||
	printf("%d\n",h->length);	//打印哈希表的元素个数 
 | 
					 | 
				
			||||||
	Destroy_Table(h);	// 摧毁哈希表
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PRIV_SHELL_CMD_FUNCTION(Testhash, a hash test sample, PRIV_SHELL_CMD_MAIN_ATTR);
 | 
					 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ ifeq ($(CONFIG_ADD_XIZI_FEATURES),y)
 | 
				
			||||||
	ifeq ($(CONFIG_RESOURCES_LWIP),y)
 | 
						ifeq ($(CONFIG_RESOURCES_LWIP),y)
 | 
				
			||||||
		SRC_DIR += socket_demo
 | 
							SRC_DIR += socket_demo
 | 
				
			||||||
	endif
 | 
						endif
 | 
				
			||||||
	SRC_DIR +=mqtt_demo
 | 
					
 | 
				
			||||||
    include $(KERNEL_ROOT)/compiler.mk
 | 
					    include $(KERNEL_ROOT)/compiler.mk
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,144 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Copyright (c) 2020 AIIT XUOS Lab
 | 
					 | 
				
			||||||
 * XiUOS is licensed under Mulan PSL v2.
 | 
					 | 
				
			||||||
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 | 
					 | 
				
			||||||
 * You may obtain a copy of Mulan PSL v2 at:
 | 
					 | 
				
			||||||
 *        http://license.coscl.org.cn/MulanPSL2
 | 
					 | 
				
			||||||
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | 
					 | 
				
			||||||
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | 
					 | 
				
			||||||
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | 
					 | 
				
			||||||
 * See the Mulan PSL v2 for more details.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
* @file:    xs_hash.h
 | 
					 | 
				
			||||||
* @brief:   hash table
 | 
					 | 
				
			||||||
* @version: 1.0
 | 
					 | 
				
			||||||
* @author:  AIIT XUOS Lab
 | 
					 | 
				
			||||||
* @date:    2023/7/10
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdio.h>
 | 
					 | 
				
			||||||
#include <stdint.h>
 | 
					 | 
				
			||||||
#include<stdlib.h>
 | 
					 | 
				
			||||||
#include "xs_base.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define REMAINDER 11
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct element
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	uint8_t key;
 | 
					 | 
				
			||||||
	uint8_t value;
 | 
					 | 
				
			||||||
	uint8_t hash;
 | 
					 | 
				
			||||||
}Element;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct Pnode
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	Element *data;
 | 
					 | 
				
			||||||
	struct Pnode *next;
 | 
					 | 
				
			||||||
}Node;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct hash_table
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	uint8_t size;
 | 
					 | 
				
			||||||
	uint8_t length;
 | 
					 | 
				
			||||||
	struct Pnode *head;
 | 
					 | 
				
			||||||
}Hash_table;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Hash_table* Creat_Table(int table_size)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	Hash_table *h = (Hash_table *)malloc(sizeof(Hash_table));
 | 
					 | 
				
			||||||
	h->size = REMAINDER;
 | 
					 | 
				
			||||||
	h->head = (Node *)malloc((h->size)*sizeof(Node));
 | 
					 | 
				
			||||||
	h->length = 0;
 | 
					 | 
				
			||||||
	int i = 0;
 | 
					 | 
				
			||||||
	for(i=0 ; i<h->size ; i++)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		h->head[i].next = NULL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return h;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int hash(int value)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return value%REMAINDER;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Node *lookup(Hash_table *h , int key)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
	i = hash(key);
 | 
					 | 
				
			||||||
	Node * p = h->head[i].next;
 | 
					 | 
				
			||||||
	while(p && key != p->data->key)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		p = p->next;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return p;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void Insert(Hash_table *h , Element k)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	Node * p = lookup(h,k.key);
 | 
					 | 
				
			||||||
	if(!p)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		Node *q = (Node *)malloc(sizeof(Node));
 | 
					 | 
				
			||||||
		q->data = (Element *)malloc(sizeof(Element));
 | 
					 | 
				
			||||||
		(q->data)->key = k.key;
 | 
					 | 
				
			||||||
		(q->data)->value = k.value;
 | 
					 | 
				
			||||||
		int position;
 | 
					 | 
				
			||||||
		position = (q->data)->hash  = hash(k.key);
 | 
					 | 
				
			||||||
		q->next = h->head[position].next;
 | 
					 | 
				
			||||||
		h->head[position].next = q;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		h->length += 1; 
 | 
					 | 
				
			||||||
		return ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		printf("The keys is exist !\n");
 | 
					 | 
				
			||||||
		return ;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void Destroy_Table(Hash_table *h)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
	Node *p , *q;
 | 
					 | 
				
			||||||
	for(i=0 ; i<h->size ; i++)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		p = h->head[i].next;
 | 
					 | 
				
			||||||
		while(p)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			q=p->next;
 | 
					 | 
				
			||||||
			free(p);
 | 
					 | 
				
			||||||
			p=q;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	free(h->head);
 | 
					 | 
				
			||||||
	free(h);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void print_Table(Hash_table *h)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i = 0; 
 | 
					 | 
				
			||||||
	for (i = 0; i < h->size ; i++)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        Node * p = h->head[i].next;
 | 
					 | 
				
			||||||
        while (p)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            printf("[%d-%d] ",p->data->key, p->data->value);
 | 
					 | 
				
			||||||
            p = p->next;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        printf("NULL\n");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ SRC_DIR += api
 | 
				
			||||||
SRC_DIR += arch
 | 
					SRC_DIR += arch
 | 
				
			||||||
SRC_DIR += core
 | 
					SRC_DIR += core
 | 
				
			||||||
SRC_DIR += netif
 | 
					SRC_DIR += netif
 | 
				
			||||||
SRC_DIR += include
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRC_DIR += apps
 | 
					SRC_DIR += apps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ LWIP_DIR += api
 | 
				
			||||||
LWIP_DIR += arch
 | 
					LWIP_DIR += arch
 | 
				
			||||||
LWIP_DIR += core
 | 
					LWIP_DIR += core
 | 
				
			||||||
LWIP_DIR += netif
 | 
					LWIP_DIR += netif
 | 
				
			||||||
LWIP_DIR += include
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LWIP_DIR += apps
 | 
					LWIP_DIR += apps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,6 @@
 | 
				
			||||||
// #define LWIP_API_MSG_DEBUG
 | 
					// #define LWIP_API_MSG_DEBUG
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #define LWIP_SOCKETS_DEBUG 1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef LWIP_DEBUG
 | 
					#ifdef LWIP_DEBUG
 | 
				
			||||||
#ifdef LWIP_SYS_DEBUG
 | 
					#ifdef LWIP_SYS_DEBUG
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +0,0 @@
 | 
				
			||||||
SRC_DIR += lwip
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LWIP_DIR += lwip
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
include $(KERNEL_ROOT)/compiler.mk
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,6 +0,0 @@
 | 
				
			||||||
SRC_DIR += apps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LWIP_DIR += apps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
include $(KERNEL_ROOT)/compiler.mk
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue