/** * workingset_eviction - note the eviction of a page from memory * @mapping: address space the page was backing * @page: the page being evicted * * Returns a shadow entry to be stored in @mapping->page_tree in place * of the evicted @page so that a later refault can be detected. */ void *workingset_eviction(struct address_space *mapping, struct page *page) { struct zone *zone = page_zone(page); unsigned long eviction; eviction = atomic_long_inc_return(&zone->inactive_age); return pack_shadow(eviction, zone); }
inline void doBarrier(size_t tid) { assert(tid<maxNThreads); const int whichBar = (barArray[tid] ^= true); // computes % 2 long c = atomic_long_inc_return(&B[whichBar]); if ((size_t)c == _barrier) { atomic_long_set(&B[whichBar], 0); return; } // spin-wait while(c) { c= atomic_long_read(&B[whichBar]); PAUSE(); // TODO: define a spin policy ! } }
static int nfs_set_page_writeback(struct page *page) { int ret = test_set_page_writeback(page); if (!ret) { struct inode *inode = page->mapping->host; struct nfs_server *nfss = NFS_SERVER(inode); if (atomic_long_inc_return(&nfss->writeback) > NFS_CONGESTION_ON_THRESH) { set_bdi_congested(&nfss->backing_dev_info, BLK_RW_ASYNC); } } return ret; }
void unix_inflight(struct file *fp) { struct sock *s = unix_get_socket(fp); if (s) { struct unix_sock *u = unix_sk(s); spin_lock(&unix_gc_lock); if (atomic_long_inc_return(&u->inflight) == 1) { BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); } else { BUG_ON(list_empty(&u->link)); } unix_tot_inflight++; spin_unlock(&unix_gc_lock); } }
/* * For use from filesystems to quickly init and register a bdi associated * with dirty writeback */ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name) { int err; bdi->name = name; bdi->capabilities = 0; err = bdi_init(bdi); if (err) return err; err = bdi_register(bdi, NULL, "%.28s-%ld", name, atomic_long_inc_return(&bdi_seq)); if (err) { bdi_destroy(bdi); return err; } return 0; }
value_type operator++() // prefix { return atomic_long_inc_return(&_rep); }