struct file *console_alloc() { struct console_file *f = (struct console_file *)kmalloc(sizeof(struct console_file)); file_init(&f->custom_file.base_file, &console_ops, O_LARGEFILE | O_RDWR); virtualfs_init_custom(f, &console_desc); return (struct file *)f; }
static struct file *dsp_alloc() { struct dsp_file *f = (struct dsp_file *)kmalloc(sizeof(struct dsp_file)); file_init(&f->custom_file.base_file, &dsp_ops, O_LARGEFILE | O_RDWR); virtualfs_init_custom(f, &dsp_desc); f->waveout = NULL; SECURITY_ATTRIBUTES attr; attr.nLength = sizeof(SECURITY_ATTRIBUTES); attr.bInheritHandle = FALSE; attr.lpSecurityDescriptor = NULL; for (int i = 0; i < DSP_BUFFER_COUNT; i++) f->buffer[i].event = CreateEventW(&attr, FALSE, TRUE, NULL); dsp_reset(f); return (struct file *)f; }