Exemplo n.º 1
0
int main(void)
{
    tid_t tid;
    size_t i, n;

    if (!metal_init(0))
        return 1;

    if (!metal_task_new(&tid, "hello", 0, hellofn))
        die("Could not create task.\n");

    if (!metal_task_start(tid))
        die("Could not start task\n");

    usleep(1500);

    n = 100;
    for (i = 0; i < n; i++) {
        if (!message_send(0, tid, MM_MY_MESSAGE, 0, 0))
            die("Could not send message to task\n");
    usleep(1000);
    }

    usleep(1000);

    // Stop the task in a civilized way
    if (!metal_task_stop(tid))
        die("Could not stop task");

    if (!metal_exit())
        return 1;

    return 0;
}
Exemplo n.º 2
0
/**
 * @brief sys_init() - Register libmetal devices.
 *        This function register the libmetal generic bus, and then
 *        register the IPI, shared memory descriptor and shared memory
 *        devices to the libmetal generic bus.
 *
 * @return 0 - succeeded, non-zero for failures.
 */
int sys_init()
{
	struct metal_init_params metal_param = METAL_INIT_DEFAULTS;
	int ret;

	enable_caches();
	init_uart();
	if (init_irq()) {
		LPERROR("Failed to initialize interrupt\n");
	}

	/* Initialize libmetal environment */
	metal_init(&metal_param);
	/* Initialize metal Xilinx IRQ controller */
	ret = metal_xlnx_irq_init();
	if (ret) {
		LPERROR("%s: Xilinx metal IRQ controller init failed.\n",
			__func__);
		return ret;
	}
	/* Register libmetal devices */
	ret = platform_register_metal_device();
	if (ret) {
		LPERROR("%s: failed to register devices: %d\n", __func__, ret);
		return ret;
	}

	/* Open libmetal devices which have been registered */
	ret = open_metal_devices();
	if (ret) {
		LPERROR("%s: failed to open devices: %d\n", __func__, ret);
		return ret;
	}
	return 0;
}
Exemplo n.º 3
0
int init_system()
{
	struct metal_init_params metal_param = METAL_INIT_DEFAULTS;

	metal_init(&metal_param);

	return 0;
}