• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/dream/

Lines Matching defs:pmem

1 /* drivers/android/pmem.c
85 unsigned order:7; /* size of the region in pmem space */
105 /* physical start address of the remaped pmem space */
107 /* vitual start address of the remaped pmem space */
109 /* total size of the pmem space */
111 /* number of entries in the pmem space */
115 /* index of the garbage page in the pmem space */
130 /* for debugging, creates a list of pmem file structs, the
140 * pmem_data->sem protects the pmem data of a particular file
153 static struct pmem_info pmem[PMEM_MAX_DEVICES];
156 #define PMEM_IS_FREE(id, index) (!(pmem[id].bitmap[index].allocated))
157 #define PMEM_ORDER(id, index) pmem[id].bitmap[index].order
161 #define PMEM_START_ADDR(id, index) (PMEM_OFFSET(index) + pmem[id].base)
165 #define PMEM_START_VADDR(id, index) (PMEM_OFFSET(id, index) + pmem[id].vbase)
200 MKDEV(MISC_MAJOR, pmem[id].dev.minor)))
242 if (pmem[id].no_allocator) {
243 pmem[id].allocated = 0;
247 pmem[id].bitmap[curr].allocated = 0;
262 } while (curr < pmem[id].num_entries);
277 down(&pmem[id].data_list_sem);
282 list_for_each(elt, &pmem[id].data_list) {
294 up(&pmem[id].data_list_sem);
301 down_write(&pmem[id].bitmap_sem);
303 up_write(&pmem[id].bitmap_sem);
325 if (pmem[id].release)
326 ret = pmem[id].release(inode, file);
339 /* you can only open a pmem device one time */
344 printk("pmem: unable to allocate memory for pmem metadata.");
362 down(&pmem[id].data_list_sem);
363 list_add(&data->list, &pmem[id].data_list);
364 up(&pmem[id].data_list_sem);
385 int end = pmem[id].num_entries;
389 if (pmem[id].no_allocator) {
391 if ((len > pmem[id].size) || pmem[id].allocated)
393 pmem[id].allocated = 1;
424 printk("pmem: no space left to allocate!\n");
438 pmem[id].bitmap[best_fit].allocated = 1;
446 if (pmem[id].cached == 0 || file->f_flags & O_SYNC)
450 else if (pmem[id].buffered)
458 if (pmem[id].no_allocator)
467 return pmem_start_addr(id, data) - pmem[id].base + pmem[id].vbase;
472 if (pmem[id].no_allocator)
487 pmem[id].garbage_pfn))
541 /* this should never be called as we don't support copying pmem
558 printk(KERN_WARNING "pmem: something is very wrong, you are "
588 printk(KERN_ERR "pmem: mmaps must be at offset zero, aligned"
602 printk(KERN_ERR "pmem: you can only mmap a pmem file once, "
610 down_write(&pmem[id].bitmap_sem);
612 up_write(&pmem[id].bitmap_sem);
618 printk("pmem: could not find allocation for map.\n");
624 printk(KERN_WARNING "pmem: mmap size [%lu] does not match"
639 printk("pmem: mmap failed in kernel!\n");
667 printk(KERN_INFO "pmem: mmap failed in kernel!\n");
680 /* the following are the api for accessing pmem regions by other drivers
688 printk(KERN_INFO "pmem: requested pmem data from invalid"
718 printk(KERN_INFO "pmem: requested pmem data from file with no "
745 printk(KERN_INFO "pmem: requested data from file descriptor "
773 printk("pmem: pmem_put > pmem_get %s (pid %d)\n",
774 pmem[id].dev.name, data->pid);
797 if (!pmem[id].cached)
831 /* retrieve the src file and check it is a pmem file with an alloc */
835 printk(KERN_INFO "pmem: src file not found!\n");
840 printk(KERN_INFO "pmem: src file is not a pmem file or has no "
848 printk(KERN_INFO "pmem: file is already mapped but doesn't "
887 printk(KERN_DEBUG "pmem: can't remap task is gone!\n");
934 /* pmem region must be aligned on a page boundry */
938 printk(KERN_DEBUG "pmem: request for unaligned pmem "
957 printk("pmem: remap requested from non-master process\n");
968 printk(KERN_INFO "pmem: suballoc doesn't fit in src_file!\n");
1001 printk("pmem: Unmap region does not map any mapped "
1089 printk(KERN_INFO "pmem: request for physical address "
1090 "of pmem region from process %d.\n", current->pid);
1132 region.len = pmem[id].size;
1151 if (pmem[id].ioctl)
1152 return pmem[id].ioctl(file, cmd, arg);
1180 down(&pmem[id].data_list_sem);
1181 list_for_each(elt, &pmem[id].data_list) {
1197 up(&pmem[id].data_list_sem);
1220 pmem[id].no_allocator = pdata->no_allocator;
1221 pmem[id].cached = pdata->cached;
1222 pmem[id].buffered = pdata->buffered;
1223 pmem[id].base = pdata->start;
1224 pmem[id].size = pdata->size;
1225 pmem[id].ioctl = ioctl;
1226 pmem[id].release = release;
1227 init_rwsem(&pmem[id].bitmap_sem);
1228 init_MUTEX(&pmem[id].data_list_sem);
1229 INIT_LIST_HEAD(&pmem[id].data_list);
1230 pmem[id].dev.name = pdata->name;
1231 pmem[id].dev.minor = id;
1232 pmem[id].dev.fops = &pmem_fops;
1235 err = misc_register(&pmem[id].dev);
1237 printk(KERN_ALERT "Unable to register pmem driver!\n");
1240 pmem[id].num_entries = pmem[id].size / PMEM_MIN_ALLOC;
1242 pmem[id].bitmap = kcalloc(pmem[id].num_entries,
1244 if (!pmem[id].bitmap)
1247 for (i = sizeof(pmem[id].num_entries) * 8 - 1; i >= 0; i--) {
1248 if ((pmem[id].num_entries) & 1<<i) {
1254 if (pmem[id].cached)
1255 pmem[id].vbase = ioremap_cached(pmem[id].base,
1256 pmem[id].size);
1258 else if (pmem[id].buffered)
1259 pmem[id].vbase = ioremap_ext_buffered(pmem[id].base,
1260 pmem[id].size);
1263 pmem[id].vbase = ioremap(pmem[id].base, pmem[id].size);
1265 if (pmem[id].vbase == 0)
1268 pmem[id].garbage_pfn = page_to_pfn(alloc_page(GFP_KERNEL));
1269 if (pmem[id].no_allocator)
1270 pmem[id].allocated = 0;
1278 kfree(pmem[id].bitmap);
1280 misc_deregister(&pmem[id].dev);
1290 printk(KERN_ALERT "Unable to probe pmem!\n");
1301 __free_page(pfn_to_page(pmem[id].garbage_pfn));
1302 misc_deregister(&pmem[id].dev);