Exemplo n.º 1
0
static int hostaudio_open(struct inode *inode, struct file *file)
{
        struct hostaudio_state *state;
        int r = 0, w = 0;
        int ret;

#ifdef DEBUG
        printk("hostaudio: open called (host: %s)\n", dsp);
#endif

        state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL);
        if(state == NULL)
		return(-ENOMEM);

        if(file->f_mode & FMODE_READ) r = 1;
        if(file->f_mode & FMODE_WRITE) w = 1;

	ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0);
        if(ret < 0){
		kfree(state);
		return(ret);
        }

	state->fd = ret;
        file->private_data = state;
        return(0);
}
Exemplo n.º 2
0
static int __init tanbac_tb0219_init(void)
{
	int retval;

	tb0219_platform_device = platform_device_alloc("TB0219", -1);
	if (!tb0219_platform_device)
		return -ENOMEM;

	retval = platform_device_add(tb0219_platform_device);
	if (retval < 0) {
		platform_device_put(tb0219_platform_device);
		return retval;
	}

	retval = platform_driver_register(&tb0219_device_driver);
	if (retval < 0)
		platform_device_unregister(tb0219_platform_device);

	fd = os_open_file("/home/ibkim/project/LDD/mmapper", of_cloexec(of_rdwr(OPENFLAGS()))/* of_read(OPENFLAGS()) */, 0);
	if (fd < 0) {
	    printk("Test: Open error\n");
	    return -1;
	}

	retval = um_request_irq(MAPPER_IRQ, fd, /* IRQ_READ */0, test_interrupt,
				IRQF_SAMPLE_RANDOM, "mapper", NULL);
	if (retval) {
	    printk("Test: Request irq error %d\n", retval);
	    return -1;
	}

	return retval;
}
Exemplo n.º 3
0
unsigned long os_process_pc(int pid)
{
	char proc_stat[STAT_PATH_LEN], buf[256];
	unsigned long pc;
	int fd, err;

	sprintf(proc_stat, "/proc/%d/stat", pid);
	fd = os_open_file(proc_stat, of_read(OPENFLAGS()), 0);
	if(fd < 0){
		printk("os_process_pc - couldn't open '%s', err = %d\n",
		       proc_stat, -fd);
		return(ARBITRARY_ADDR);
	}
	err = os_read_file(fd, buf, sizeof(buf));
	if(err < 0){
		printk("os_process_pc - couldn't read '%s', err = %d\n",
		       proc_stat, -err);
		os_close_file(fd);
		return(ARBITRARY_ADDR);
	}
	os_close_file(fd);
	pc = ARBITRARY_ADDR;
	if(sscanf(buf, "%*d " COMM_SCANF " %*c %*d %*d %*d %*d %*d %*d %*d "
		  "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
		  "%*d %*d %*d %*d %*d %lu", &pc) != 1){
		printk("os_process_pc - couldn't find pc in '%s'\n", buf);
	}
	return(pc);
}
Exemplo n.º 4
0
static int hostmixer_open_mixdev(struct inode *inode, struct file *file)
{
        struct hostmixer_state *state;
        int r = 0, w = 0;
        int ret;

#ifdef DEBUG
        printk("hostmixer: open called (host: %s)\n", mixer);
#endif

        state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL);
        if(state == NULL) return(-ENOMEM);

        if(file->f_mode & FMODE_READ) r = 1;
        if(file->f_mode & FMODE_WRITE) w = 1;

	ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0);
        
        if(ret < 0){
		printk("hostaudio_open_mixdev failed to open '%s', err = %d\n",
		       dsp, -ret);
		kfree(state);
		return(ret);
        }

        file->private_data = state;
        return(0);
}
Exemplo n.º 5
0
static int hostaudio_open(struct inode *inode, struct file *file)
{
	struct hostaudio_state *state;
	int r = 0, w = 0;
	int ret;

#ifdef DEBUG
	kernel_param_lock(THIS_MODULE);
	printk(KERN_DEBUG "hostaudio: open called (host: %s)\n", dsp);
	kernel_param_unlock(THIS_MODULE);
#endif

	state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL);
	if (state == NULL)
		return -ENOMEM;

	if (file->f_mode & FMODE_READ)
		r = 1;
	if (file->f_mode & FMODE_WRITE)
		w = 1;

	kernel_param_lock(THIS_MODULE);
	mutex_lock(&hostaudio_mutex);
	ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0);
	mutex_unlock(&hostaudio_mutex);
	kernel_param_unlock(THIS_MODULE);

	if (ret < 0) {
		kfree(state);
		return ret;
	}
	state->fd = ret;
	file->private_data = state;
	return 0;
}
Exemplo n.º 6
0
static int file_removed(struct dentry *dentry, const char *file)
{
	char *host_file;
	int extra, fd;

	extra = 0;
	if(file != NULL) extra += strlen(file) + 1;

	host_file = dentry_name(dentry, extra + strlen("/remove"));
	if(host_file == NULL){
		printk("file_removed : allocation failed\n");
		return(-ENOMEM);
	}

	if(file != NULL){
		strcat(host_file, "/");
		strcat(host_file, file);
	}
	strcat(host_file, "/remove");

	fd = os_open_file(host_file, of_read(OPENFLAGS()), 0);
	kfree(host_file);
	if(fd >= 0){
		os_close_file(fd);
		return(1);
	}
	return(0);
}
Exemplo n.º 7
0
int os_process_parent(int pid)
{
	char stat[STAT_PATH_LEN];
	char data[256];
	int parent, n, fd;

	if(pid == -1) return(-1);

	snprintf(stat, sizeof(stat), "/proc/%d/stat", pid);
	fd = os_open_file(stat, of_read(OPENFLAGS()), 0);
	if(fd < 0){
		printk("Couldn't open '%s', err = %d\n", stat, -fd);
		return(FAILURE_PID);
	}

	n = os_read_file(fd, data, sizeof(data));
	os_close_file(fd);

	if(n < 0){
		printk("Couldn't read '%s', err = %d\n", stat, -n);
		return(FAILURE_PID);
	}

	parent = FAILURE_PID;
	n = sscanf(data, "%*d " COMM_SCANF " %*c %d", &parent);
	if(n != 1)
		printk("Failed to scan '%s'\n", data);

	return(parent);
}
Exemplo n.º 8
0
static FILE *
os_open_error_file (void)
{
    char * name;
    FILE * file;

    name = os_reportGetErrorFileName();
    file = os_open_file(name);
    os_free (name);
    return file;
}
Exemplo n.º 9
0
static FILE *
os_open_info_file (void)
{
    char * name;
    FILE * file;

    name = os_reportGetInfoFileName();
    file = os_open_file(name);
    os_free (name);
    return file;
}
Exemplo n.º 10
0
static int slip_open(void *data)
{
	struct slip_data *pri = data;
	char version_buf[sizeof("nnnnn\0")];
	char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")];
	char *argv[] = { "uml_net", version_buf, "slip", "up", gate_buf, 
			 NULL };
	int sfd, mfd, disc, sencap, err;

	if((mfd = get_pty()) < 0){
		printk("umn : Failed to open pty\n");
		return(-1);
	}
	if((sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0)) < 0){
		printk("Couldn't open tty for slip line\n");
		return(-1);
	}
	if(set_up_tty(sfd)) return(-1);
	pri->slave = sfd;
	pri->pos = 0;
	pri->esc = 0;
	if(pri->gate_addr != NULL){
		sprintf(version_buf, "%d", UML_NET_VERSION);
		strcpy(gate_buf, pri->gate_addr);

		err = slip_tramp(argv, sfd);

		if(err != 0){
			printk("slip_tramp failed - errno = %d\n", err);
			return(-err);
		}
		if(ioctl(pri->slave, SIOCGIFNAME, pri->name) < 0){
			printk("SIOCGIFNAME failed, errno = %d\n", errno);
			return(-errno);
		}
		iter_addresses(pri->dev, open_addr, pri->name);
	}
	else {
		disc = N_SLIP;
		if(ioctl(sfd, TIOCSETD, &disc) < 0){
			printk("Failed to set slip line discipline - "
			       "errno = %d\n", errno);
			return(-errno);
		}
		sencap = 0;
		if(ioctl(sfd, SIOCSIFENCAP, &sencap) < 0){
			printk("Failed to set slip encapsulation - "
			       "errno = %d\n", errno);
			return(-errno);
		}
	}
	return(mfd);
}
Exemplo n.º 11
0
int new_mm(unsigned long stack)
{
	int fd;

	fd = os_open_file("/proc/mm", of_cloexec(of_write(OPENFLAGS())), 0);
	if(fd < 0)
		return(fd);

	if(skas_needs_stub)
		map_stub_pages(fd, CONFIG_STUB_CODE, CONFIG_STUB_DATA, stack);

	return(fd);
}
Exemplo n.º 12
0
int new_mm(int from)
{
	struct proc_mm_op copy;
	int n, fd;

	fd = os_open_file("/proc/mm", of_cloexec(of_write(OPENFLAGS())), 0);
	if(fd < 0)
		return(fd);

	if(from != -1){
		copy = ((struct proc_mm_op) { .op 	= MM_COPY_SEGMENTS,
					      .u 	=
					      { .copy_segments	= from } } );
Exemplo n.º 13
0
int load_initrd(char *filename, void *buf, int size)
{
	int fd, n;

	if((fd = os_open_file(filename, of_read(OPENFLAGS()), 0)) < 0){
		printk("Opening '%s' failed - errno = %d\n", filename, errno);
		return(-1);
	}
	if((n = read(fd, buf, size)) != size){
		printk("Read of %d bytes from '%s' returned %d, errno = %d\n",
		       size, filename, n, errno);
		return(-1);
	}
	return(0);
}
Exemplo n.º 14
0
int new_mm(unsigned long stack)
{
    int fd, err;

    fd = os_open_file("/proc/mm", of_cloexec(of_write(OPENFLAGS())), 0);
    if (fd < 0)
        return fd;

    if (skas_needs_stub) {
        err = map_stub_pages(fd, STUB_CODE, STUB_DATA, stack);
        if (err) {
            os_close_file(fd);
            return err;
        }
    }

    return fd;
}
Exemplo n.º 15
0
Arquivo: initrd.c Projeto: 08opt/linux
static int load_initrd(char *filename, void *buf, int size)
{
	int fd, n;

	fd = os_open_file(filename, of_read(OPENFLAGS()), 0);
	if (fd < 0) {
		printk(KERN_ERR "Opening '%s' failed - err = %d\n", filename,
		       -fd);
		return -1;
	}
	n = os_read_file(fd, buf, size);
	if (n != size) {
		printk(KERN_ERR "Read of %d bytes from '%s' failed, "
		       "err = %d\n", size,
		       filename, -n);
		return -1;
	}

	os_close_file(fd);
	return 0;
}
Exemplo n.º 16
0
static int __init create_pid_file(void)
{
	char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")];
	char pid[sizeof("nnnnn\0")];
	int fd, n;

	if(umid_file_name("pid", file, sizeof(file))) return 0;

	fd = os_open_file(file, of_create(of_excl(of_rdwr(OPENFLAGS()))), 
			  0644);
	if(fd < 0){
		printf("Open of machine pid file \"%s\" failed: %s\n",
		       file, strerror(-fd));
		return 0;
	}

	sprintf(pid, "%d\n", os_getpid());
	n = os_write_file(fd, pid, strlen(pid));
	if(n != strlen(pid))
		printf("Write of pid file failed - err = %d\n", -n);
	os_close_file(fd);
	return 0;
}
Exemplo n.º 17
0
static int hostmixer_open_mixdev(struct inode *inode, struct file *file)
{
	struct hostmixer_state *state;
	int r = 0, w = 0;
	int ret;

#ifdef DEBUG
	printk(KERN_DEBUG "hostmixer: open called (host: %s)\n", mixer);
#endif

	state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL);
	if (state == NULL)
		return -ENOMEM;

	if (file->f_mode & FMODE_READ)
		r = 1;
	if (file->f_mode & FMODE_WRITE)
		w = 1;

	kernel_param_lock(THIS_MODULE);
	mutex_lock(&hostaudio_mutex);
	ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0);
	mutex_unlock(&hostaudio_mutex);
	kernel_param_unlock(THIS_MODULE);

	if (ret < 0) {
		kernel_param_lock(THIS_MODULE);
		printk(KERN_ERR "hostaudio_open_mixdev failed to open '%s', "
		       "err = %d\n", dsp, -ret);
		kernel_param_unlock(THIS_MODULE);
		kfree(state);
		return ret;
	}

	file->private_data = state;
	return 0;
}
Exemplo n.º 18
0
int not_dead_yet(char *dir)
{
	char file[strlen(uml_dir) + UMID_LEN + sizeof("/pid\0")];
	char pid[sizeof("nnnnn\0")], *end;
	int dead, fd, p, n;

	sprintf(file, "%s/pid", dir);
	dead = 0;
	fd = os_open_file(file, of_read(OPENFLAGS()), 0);
	if(fd < 0){
		if(fd != -ENOENT){
			printk("not_dead_yet : couldn't open pid file '%s', "
			       "err = %d\n", file, -fd);
			return(1);
		}
		dead = 1;
	}
	if(fd > 0){
		n = os_read_file(fd, pid, sizeof(pid));
		if(n < 0){
			printk("not_dead_yet : couldn't read pid file '%s', "
			       "err = %d\n", file, -n);
			return(1);
		}
		p = strtoul(pid, &end, 0);
		if(end == pid){
			printk("not_dead_yet : couldn't parse pid file '%s', "
			       "errno = %d\n", file, errno);
			dead = 1;
		}
		if(((kill(p, 0) < 0) && (errno == ESRCH)) ||
		   (p == CHOOSE_MODE(tracing_pid, os_getpid())))
			dead = 1;
	}
	if(!dead) return(1);
	return(actually_do_remove(dir));
}
Exemplo n.º 19
0
static int slip_open(void *data)
{
	struct slip_data *pri = data;
	char version_buf[sizeof("nnnnn\0")];
	char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")];
	char *argv[] = { "uml_net", version_buf, "slip", "up", gate_buf, 
			 NULL };
	int sfd, mfd, err;

	err = get_pty();
	if(err < 0){
		printk("slip-open : Failed to open pty, err = %d\n", -err);
		goto out;
	}
	mfd = err;

	err = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0);
	if(err < 0){
		printk("Couldn't open tty for slip line, err = %d\n", -err);
		goto out_close;
	}
	sfd = err;

	if(set_up_tty(sfd))
		goto out_close2;

	pri->slave = sfd;
	pri->slip.pos = 0;
	pri->slip.esc = 0;
	if(pri->gate_addr != NULL){
		sprintf(version_buf, "%d", UML_NET_VERSION);
		strcpy(gate_buf, pri->gate_addr);

		err = slip_tramp(argv, sfd);

		if(err < 0){
			printk("slip_tramp failed - err = %d\n", -err);
			goto out_close2;
		}
		err = os_get_ifname(pri->slave, pri->name);
		if(err < 0){
			printk("get_ifname failed, err = %d\n", -err);
			goto out_close2;
		}
		iter_addresses(pri->dev, open_addr, pri->name);
	}
	else {
		err = os_set_slip(sfd);
		if(err < 0){
			printk("Failed to set slip discipline encapsulation - "
			       "err = %d\n", -err);
			goto out_close2;
		}
	}
	return(mfd);
out_close2:
	os_close_file(sfd);
out_close:
	os_close_file(mfd);
out:
	return err;
}
Exemplo n.º 20
0
file_t* file_open(const char* path, int forcenew)
{
    file_handle_t handle = INVALID_FILE_HANDLE;
    file_hdr_t* hdr = NULL;
    file_t* file;
    int result;
    u32 size;
    
    if (system_page_size == 0) {
        if (get_system_page_size() < 0)
            return NULL;
    }
    
    /* Open/create the backing file. */
    result = os_open_file(path, &handle);
    if (result < 0)
        goto error;

    /* Make sure the file is at least 16 pages in size. */
    if (os_get_file_size(handle, &size) < 0)
        goto error;

    if (size < MIN_FILE_SIZE) {
        if (os_set_file_size(handle, MIN_FILE_SIZE, &size) < 0)
            goto error;

        if (size < MIN_FILE_SIZE) {
            fprintf(stderr, "file_open: file with size %u is smaller than the"
                    " minimum size (%u)\n", size, MIN_FILE_SIZE);
            goto error;
        }
    }
    
    /* Map the first page of the file as the B-Tree's header. */
    hdr = (file_hdr_t*)os_get_page(handle, 0);
    if (hdr == NULL)
        goto error;

    if ((result == 0) && (forcenew == 0)) {
        DPRINT("Opening existing file\n");
        
        /* Existing file: validate the cookie. */
        if (hdr->cookie != FILE_COOKIE) {
            fprintf(stderr, "Found a bad file cookie (%x) while opening %s",
                    hdr->cookie, path);
            goto error;
        }
    }
    else {
        DPRINT("Creating a new file\n");
        
        /* New file. Initialize the header. */
        hdr->cookie = FILE_COOKIE;
        hdr->head = 0;
        hdr->tail = 0;
        hdr->free = 0;
        hdr->npages = 0;
        hdr->nrecs = 0;
    }

    /* Create the file object. */
    file = (file_t*)malloc(sizeof(file_t));
    if (file == NULL) {
        fprintf(stderr, "file_open: failed to allocate the file object\n");
        goto error;
    }
    
    /* Fill the B-Tree structure. */
    file->handle = handle;
    file->header = hdr;
    file->size = size >> PAGE_SIZE_ORDER;
    cache_invalidate(&file->cache, 1);
    memset(&file->stats, 0, sizeof(stats_t));
    
    DPRINT("file_open successful\n");
    return file;

error:
    if (handle != INVALID_FILE_HANDLE) {
        if (hdr != NULL)
            os_put_page(handle, hdr);

        os_close_file(handle);
    }
    
    return NULL;
}