【操作系统】Link.h

/************************************************************************/
/* 功能:  模拟实现可变分区存储管理的最佳适应算法的链表类
时间:2014年9月1日21:57:21
作者:信管1201 1205020116  肖锋										*/
/************************************************************************/

#ifndef LINK_H_INCLUDED
#define LINK_H_INCLUDED

class busyLink;

//自由分区链表
class freeLink
{
	friend class busyLink;
	struct Node
	{
		int size, adress;   //分别是节点内存的大小和起始地址
		char name = 'O';          //这块节点的名字
		Node* next;     //指向下一个节点

		//构造函数
		Node(int sze, int adres, char nme, Node* nxt) : size(sze), adress(adres), name(nme), next(nxt) {}
		//添加set和get函数
		int getSize() { return size; }
		void setSize(int sze){ size = sze; }
		int getAdress() { return adress; }
		void setAdress(int adres) { adress = adres; }
		char getName() { return name; }
		void setName(char nme) { name = nme; }
		Node* getNext() { return next; }
		void setNext(Node* nxt) { next = nxt; }

	};
	Node* head;	//链表的头部指针
	Node* tail;		//链表的尾部指针
	Node* getNode(int index);
	void swap(int index1, int index2);	//交换连个节点的信息
public:
	//构造函数初始化
	freeLink()
	{
		//初始化的时候会为链表自动添加系统所占用的内存
		int os = 576;
		char oname = 'O';
		int adres = 64;
		head = new Node(0, 0, oname, new Node(os, adres, oname, nullptr));
		tail = head->next;
	}
	//显示当前的分区
	void show();
	//内存地址相同的时候的碎片拼接
	void pingJie();
	//添加一个Node,等会选择插入的地点
	void addNode(int size, int adress);
	//删除Node
	//Node* popNode(char name);
	//得到头指针
	const freeLink::Node* getHead() { return head; }
	//得到尾指针
	freeLink::Node* getTail() { return tail; }
	//设置第i个节点
	void setNode(int index, int size, int adress);
	//找到要修改的节点是第几位]
	int getNeedGai(int size);
	//得到第index位的size
	int getNeedSize(int index);
	//得到index节点的地址
	int getNeedAdress(int index);
	//去除对应的节点
	void popNeed(int index);
	//合并全部空闲的节点
	void heBing(int allFreeAdress);
	//删除尾部节点的函数
	void popTail();
	//循环首次适应
	void setNeed(int index, int size);
	//首次循环适应算法的添加,就是尾部添加
	void addNode2(int size, int adress);
	//给自由链表前后的合并分区,循环首次适应算法
	void pingJie2();


	//友元,算法内存分配
	//friend 	void requireMemo(char name, int size);
	//友元,算法回收内存
	//friend void freeMemo(char name);

};


//作业占据的分区链表
class busyLink
{
	friend class freeLink;
	struct Node
	{
		int size, adress;   //分别是节点内存的大小和起始地址
		char name = 'O';          //这块节点的名字
		Node* next;     //指向下一个节点

		//构造函数
		Node(int sze, int adres, char nme, Node* nxt) : size(sze), adress(adres), name(nme), next(nxt) {}
		//添加set和get函数
		int getSize() { return size; }
		void setSize(int sze){ size = sze; }
		int getAdress() { return adress; }
		void setAdress(int adres) { adress = adres; }
		char getName() { return name; }
		void setName(char nme) { name = nme; }
		Node* getNext() { return next; }
		void setNext(Node* nxt) { next = nxt; }

	};
	Node* head;	//链表的头部指针
	Node* tail;		//链表的尾部指针
public:
	//构造函数初始化
	busyLink()
	{
		//初始化的时候会为链表自动添加系统所占用的内存
		int os = 64;
		char oname = 'O';
		int adres = 0;
		head = new Node(0, 0, 'O', new Node(os, adres, oname, nullptr));
		tail = head->next;
	}
	//显示当前的分区
	void show();
	//内存地址相同的时候的碎片拼接
	//void pingJie();
	//添加一个Node,等会选择插入的地点
	void addNode(int size, int adress, char name);
	//删除Node
	void popNode(char name);
	//得到头指针
	const busyLink::Node* getHead() { return head; }
	//得到尾指针
	busyLink::Node* getTail() { return tail; }
	//得到需要的该的节点的索引
	int getNeedGai(char name);
	//得到索引节点的size
	int getNeedSize(int index);
	//得到索引节点的adress
	int getNeedAdress(int index);
	//合并所有adress回收碎片,返回一个尾部节点的结束地址
	int reAdress();

	//友元,算法内存分配
	//friend 	void requireMemo(char name, int size);
	//友元,算法回收内存
	//friend void freeMemo(char name);

};

#endif // LINK_H_INCLUDED

<think>根据用户的问题,用户想要查找小熊派Hi3863开发板中星闪(SparkLink)的头文件`spark_link.h`所在的文件夹位置。这个问题涉及到开发环境的文件路径。在OpenHarmony的源码结构中,通常与硬件相关的头文件会放在`device`或`vendor`目录下,而驱动和中间件的头文件则可能位于`drivers`或`foundation/communication`等目录。不过,具体到小熊派Hi3863的SparkLink头文件,我们需要参考小熊派提供的SDK或OpenHarmony的代码结构。根据常见的OpenHarmony源码结构,与Wi-Fi或类似无线通信相关的头文件通常位于:-`foundation/communication/wifi_lite`(但星闪是另一种技术)-或者`drivers/peripheral`目录下由于星闪(SparkLink)是华为推出的一种新的无线通信技术,其驱动和接口可能被放在`drivers/peripheral`目录中。另外,小熊派作为Hi3863的开发板,其板级支持包(BSP)中也可能包含该头文件。因此,我们可以尝试在以下路径中查找:1.`device/hisilicon/hispark_pegasus/sdk_liteos/include/spark_link.h`2.`drivers/peripheral/sparklink/include/spark_link.h`3.`foundation/communication/sparklink/interfaces/kits/spark_link.h`但是,由于具体的项目结构可能因版本而异,建议用户在自己的OpenHarmony源码目录中使用搜索功能来定位文件。**操作步骤:**1.打开终端,进入OpenHarmony源码根目录。2.使用`find`命令搜索文件:```bashfind.-name"spark_link.h"```如果用户使用的是小熊派提供的开发环境,也可以在小熊派的SDK目录中查找。**补充说明:**-如果用户已经成功编译过项目,那么该头文件一定存在于源码目录中。-在代码中如果已经包含了`#include"spark_link.h"`,则编译系统会在预定义的include路径中查找该文件。如果上述方法无法找到,可能需要检查小熊派的文档或确认是否已正确下载了相关源码。---###§§相关问题§§1.如何在小熊派Hi3863上配置星闪模块的编译选项?2.小熊派Hi3863的星闪开发示例代码在哪里可以找到?3.OpenHarmony中如何添加新的硬件驱动头文件路径?</think>### Hi3863 Spark Link 头文件位置 在小熊派 Hi3863 开发环境中,`spark_link.h` 头文件通常位于以下路径: **标准位置:** `device/hisilicon/hispark_pegasus/sdk_liteos/include/spark_link/spark_link.h` **验证方法:** 1. 打开 Hi3863 SDK 目录 2. 使用终端命令搜索: ```bash find . -name spark_link.h ``` **典型路径结构示例:** ``` hisilicon/ └── hispark_pegasus/ └── sdk_liteos/ ├── include/ │ └── spark_link/ │ ├── spark_link.h # 主头文件 │ ├── spark_link_sta.h # 工作站模式API │ └── spark_link_sec.h # 安全协议API └── lib/ └── libsparklink.a # 星闪库文件 ``` **代码引用示例:** ```c #include <spark_link/spark_link.h> // 星闪核心功能 #include <spark_link/spark_link_sta.h> // 工作站模式 ``` **开发注意事项:** 1. 确认 SDK 版本 ≥ V1.1.0(早期版本可能无星闪支持) 2. 编译时需在 `BUILD.gn` 添加依赖: ```gn deps = [ "//device/hisilicon/hispark_pegasus/sdk_liteos:sparklink" ] ``` 3. 若找不到文件,建议: - 更新小熊派开发套件至最新版 - 检查 OpenHarmony 版本是否为 3.0+ [^1]: 小熊派官方文档显示星闪头文件位于SDK的`include/spark_link`目录,实际路径可能因SDK版本略有差异。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值