예제 #1
0
/*
 * file_operations
 */
static int dev_uart_open(struct node *node, struct file_desc *desc, int flags) {
	struct uart *uart_dev = uart_dev_lookup(node->name);

	if (!uart_dev) {
		return -ENOENT;
	}

	assert(desc);

	desc->file_info = uart_dev;
	idesc_serial_create(desc, uart_dev, flags);

	return 0;
}
예제 #2
0
static struct idesc *uart_fsop_open(struct inode *node, struct idesc *desc) {
	struct device_module *cdev;
	struct idesc *idesc;
	int res;

	cdev = node->i_data;
	idesc = idesc_serial_create(cdev->dev_data, 0);
	if (err(idesc)) {
		return idesc;
	}
	res = uart_open(cdev->dev_data);
	if (res) {
		return err_ptr(-res);
	}

	return idesc;
}
예제 #3
0
static struct idesc *uart_fsop_open(struct node *node, struct file_desc *file_desc, int flags)  {
	struct uart *uart;
	struct idesc *idesc;
	int res;

	uart = uart_dev_lookup(node->name);
	if (!uart) {
		return err_ptr(ENOENT);
	}
	idesc = idesc_serial_create(uart, flags);
	if (err(idesc)) {
		return idesc;
	}
	res = uart_open(uart);
	if (res) {
		return err_ptr(-res);
	}

	return idesc;
}