38 lines
		
	
	
		
			898 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			898 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
 | 
						|
 * SPDX-License-Identifier: GPL-3.0-or-later */
 | 
						|
 | 
						|
#ifndef MODEL_H
 | 
						|
#define MODEL_H
 | 
						|
 | 
						|
#include "emu_hook.h"
 | 
						|
 | 
						|
struct model_spec {
 | 
						|
	const char *name;
 | 
						|
	int model;
 | 
						|
	char *depends;
 | 
						|
	emu_hook_t *probe;
 | 
						|
	emu_hook_t *create;
 | 
						|
	emu_hook_t *connect;
 | 
						|
	emu_hook_t *event;
 | 
						|
	emu_hook_t *finish;
 | 
						|
};
 | 
						|
 | 
						|
#define MAX_MODELS 256
 | 
						|
 | 
						|
struct model {
 | 
						|
	struct model_spec *spec[MAX_MODELS];
 | 
						|
	int registered[MAX_MODELS];
 | 
						|
	int enabled[MAX_MODELS];
 | 
						|
};
 | 
						|
 | 
						|
void model_init(struct model *model);
 | 
						|
int model_register(struct model *model, struct model_spec *spec);
 | 
						|
 | 
						|
int model_probe(struct model *model, struct emu *emu);
 | 
						|
int model_create(struct model *model, struct emu *emu);
 | 
						|
int model_connect(struct model *model, struct emu *emu);
 | 
						|
int model_event(struct model *model, struct emu *emu, int index);
 | 
						|
int model_finish(struct model *model, struct emu *emu);
 | 
						|
 | 
						|
#endif /* MODEL_H */
 |