Files
umka/shell.h
T

66 lines
1.3 KiB
C
Raw Normal View History

2022-06-27 21:36:56 +04:00
/*
SPDX-License-Identifier: GPL-2.0-or-later
UMKa - User-Mode KolibriOS developer tools
umka_shell - the shell
2023-01-17 00:49:11 +00:00
Copyright (C) 2020-2023 Ivan Baravy <dunkaist@gmail.com>
2022-06-27 21:36:56 +04:00
*/
#ifndef SHELL_H_INCLUDED
#define SHELL_H_INCLUDED
2023-02-03 07:39:32 +03:00
#include <stdatomic.h>
#include <stdio.h>
#include <pthread.h>
2023-01-17 00:49:11 +00:00
#include "umka.h"
#include "umkaio.h"
2023-02-04 23:41:26 +00:00
#include "optparse/optparse.h"
enum shell_var_type {
SHELL_VAR_SINT,
SHELL_VAR_UINT,
SHELL_VAR_POINTER,
};
2023-01-17 00:49:11 +00:00
#define SHELL_LOG_NONREPRODUCIBLE 0
#define SHELL_LOG_REPRODUCIBLE 1
#define SHELL_VAR_NAME_LEN 16
struct shell_var {
struct shell_var *next;
enum shell_var_type type;
char name[SHELL_VAR_NAME_LEN];
union {ssize_t sint; size_t uint; uint64_t uint64; void *ptr;} value;
};
2022-05-29 19:17:00 +04:00
struct shell_ctx {
const struct umka_ctx *umka;
2023-02-06 16:01:37 +00:00
const struct umka_io *io;
2022-05-29 19:17:00 +04:00
int reproducible;
2022-05-30 02:08:15 +04:00
const char *hist_file;
struct shell_var *var;
FILE *fin;
FILE *fout;
2023-02-03 07:39:32 +03:00
const atomic_int *running;
pthread_cond_t cmd_done;
pthread_mutex_t cmd_mutex;
2023-02-02 16:25:20 +00:00
struct optparse opts;
2022-05-29 19:17:00 +04:00
};
2023-01-17 00:49:11 +00:00
struct shell_ctx *
2023-02-06 16:01:37 +00:00
shell_init(const int reproducible, const char *hist_file,
const struct umka_ctx *umka, const struct umka_io *io, FILE *fin);
2023-01-17 00:49:11 +00:00
void
shell_close(struct shell_ctx *shell);
void *
run_test(struct shell_ctx *ctx);
void
umka_run_cmd_sync(struct shell_ctx *ctx);
#endif // SHELL_H_INCLUDED