Ejemplo n.º 1
0
void cat_command(const std::vector<std::string>& params){
    if(!disks::mounted_partition() || !disks::mounted_disk()){
        k_print_line("Nothing is mounted");

        return;
    }

    if(params.size() == 1){
        k_print_line("No file provided");
    } else {
        auto file = find_file(params[1]);

        if(file){
            if(!file->directory){
                auto content = disks::read_file(params[1]);
                k_print(content);
            } else {
                k_print("cd: Not a file: ");
                k_print_line(params[1]);
            }
        } else {
            k_print("cd: No such file or directory: ");
            k_print_line(params[1]);
        }
    }
}
Ejemplo n.º 2
0
void echo_command(const std::vector<std::string>& params){
    for(uint64_t i = 1; i < params.size(); ++i){
        k_print(params[i]);
        k_print(' ');
    }
    k_print_line();
}
Ejemplo n.º 3
0
void cd_command(const std::vector<std::string>& params){
    if(!disks::mounted_partition() || !disks::mounted_disk()){
        k_print_line("Nothing is mounted");

        return;
    }

    //If there are no params, go to /
    if(params.size() == 1){
        disks::current_directory().clear();
    } else {
        if(params[1] == ".."){
            if(disks::current_directory().size() > 0){
                disks::current_directory().pop_back();
            }
        } else {
            auto file = find_file(params[1]);

            if(file){
                if(file->directory){
                    disks::current_directory().push_back(params[1]);
                } else {
                    k_print("cd: Not a directory: ");
                    k_print_line(params[1]);
                }
            } else {
                k_print("cd: No such file or directory: ");
                k_print_line(params[1]);
            }
        }
    }
}
Ejemplo n.º 4
0
void help_command(const std::vector<std::string>&){
    k_print("Available commands:\n");

    for(auto& command : commands){
        k_print('\t');
        k_print_line(command.name);
    }
}
Ejemplo n.º 5
0
void pwd_command(const std::vector<std::string>&){
    if(!disks::mounted_partition() || !disks::mounted_disk()){
        k_print_line("Nothing is mounted");

        return;
    }

    auto& cd = disks::current_directory();

    k_print('/');

    for(auto& p : cd){
        k_print(p);
        k_print('/');
    }

    k_print_line();
}
Ejemplo n.º 6
0
void
k_print_memory_info()
{
	int i;
	uint64_t memTotal = 0;
	k_print("=========== Phisical Memory Map ==========\n");
	for(i = 0; i < k_phisical_memory_map_size; i++)
	{
		k_print("0x%08x%08x - 0x%08x%08x %s\n",
			HIPART(k_phisical_memory_map[i].base),
			LOPART(k_phisical_memory_map[i].base),
			HIPART(k_phisical_memory_map[i].base + k_phisical_memory_map[i].length),
			LOPART(k_phisical_memory_map[i].base + k_phisical_memory_map[i].length),
			k_phisical_memory_map[i].type == MEMORY_USE_NORMAL ? "Use Normal" :
			(k_phisical_memory_map[i].type == MEMORY_USE_RESERVED ? "Reserved" :
			(k_phisical_memory_map[i].type == MEMORY_USE_ACPI_RECLAIMABLE ? "ACPI Reclaimable" :
			(k_phisical_memory_map[i].type == MEMORY_USE_ACPI_NVS ? "ACPI NVS" : "BAD"))));

		if(k_phisical_memory_map[i].type == MEMORY_USE_NORMAL)
			memTotal += k_phisical_memory_map[i].length;
	}

	//k_print("Usable memory total: %d bytes\n", (uint32_t)memTotal);
}
Ejemplo n.º 7
0
void
k_print_memory_usage_info()
{
	memInfo_t memInfo;
	int i;
	get_memory_info(&memInfo);

	k_print("Memory usage:\n");
	k_print("Heap address: 0x%08x\n", memInfo.heapAddress);
	k_print("Memory cached: %u/%u bytes\n", memInfo.heapCached, memInfo.totalSize);
	k_print("Memory used: %u bytes\n", memInfo.memoryUsed);
	k_print("Allocated blocks:\n");
	for(i = 0; i < MEMORY_SLICES_MAX_COUNT; i++)
	{
		if(memPool.numAllocatedBlocks[i] != 0)
		k_print("|%dx(%u)|", memPool.numAllocatedBlocks[i], (1<<i));
	}

	k_print("\n");
}
Ejemplo n.º 8
0
void ls_command(const std::vector<std::string>& params){
    if(!disks::mounted_partition() || !disks::mounted_disk()){
        k_print_line("Nothing is mounted");

        return;
    }

    //By default hidden files are not shown
    bool show_hidden_files = false;
    bool list = false;

    //Read options if any
    if(params.size() > 1){
        for(size_t i = 1; i < params.size(); ++i){
            if(params[i] == "-a"){
                show_hidden_files = true;
            } else if(params[i] == "-l"){
                list = true;
            }
        }
    }

    auto files = disks::ls();
    size_t total = 0;

    for(auto& file : files){
        if(file.hidden && !show_hidden_files){
            continue;
        }

        ++total;

        if(list){
            if(file.directory){
                k_print(" d ");
            } else {
                k_print(" f ");
            }

            k_print(file.size);
            k_print(' ');

            k_print(file.created.day);
            k_print('.');
            k_print(file.created.month);
            k_print('.');
            k_print(1980+file.created.year);
            k_print(' ');

            k_print(file.created.hour);
            k_print(':');
            k_print(file.created.minutes);
            k_print(' ');

            k_print_line(file.file_name);
        } else {
            k_print(file.file_name);
            k_print(' ');
        }
    }

    if(!list){
        k_print('\n');
    }

    k_printf("Total: %u\n", total);
}
Ejemplo n.º 9
0
typename std::enable_if<(sizeof...(Arguments) > 0), void>::type k_print_line(const Arguments&... args){
    k_print(args...);
    k_print('\n');
}
Ejemplo n.º 10
0
void main() {
    char *msg = "Hello world from main() in kernel.c \nStart_new_line here .....";
    k_set_cursor(23, 0);
    k_print(msg);
    k_print("\n\tThere is a tab in the left.");
}