summaryrefslogtreecommitdiff
path: root/Source/Kernel/Shell/KernelShell.class.h
blob: 9655def521ccc2e6a1daf3feafa08ca46e487408 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef DEF_KERNELSHELL_CLASS_H
#define DEF_KERNELSHELL_CLASS_H

#include <VTManager/VirtualTerminal.proto.h>
#include <VFS/DirectoryNode.class.h>
#include <TaskManager/Thread.class.h>
#include <Vector.class.h>

class KernelShell {
	friend u32int shellRun(void* ks);

	private:
	VirtualTerminal *m_vt;
	DirectoryNode *m_cwd;
	Thread* m_thread;
	static u32int m_instances;

	~KernelShell();
	u32int run();

	//in KernelShell-fs
	void ls(Vector<String>& args);
	void cd(Vector<String>& args);
	void pwd(Vector<String>& args);
	void cat(Vector<String>& args);
	void mkdir(Vector<String>& args);
	void rm(Vector<String>& args);
	void wf(Vector<String>& args);
	void run(Vector<String>& args);
	void hexdump(Vector<String>& args);

	//in KernelShell-sys
	void devices(Vector<String>& args);
	void loadkeys(Vector<String>& args);
	void free(Vector<String>& args);
	void uptime(Vector<String>& args);
	void part(Vector<String>& args);
	void readblock(Vector<String>& args);
	void mount(Vector<String>& args);

	void setup(DirectoryNode* cwd, VirtualTerminal *vt);

	public:
	KernelShell(DirectoryNode* cwd, VirtualTerminal *vt);
	KernelShell(DirectoryNode* cwd);
	
	static u32int getInstances() { return m_instances; }
};

#endif