cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dm-cache-background-tracker.h (1288B)


      1/*
      2 * Copyright (C) 2017 Red Hat. All rights reserved.
      3 *
      4 * This file is released under the GPL.
      5 */
      6
      7#ifndef DM_CACHE_BACKGROUND_WORK_H
      8#define DM_CACHE_BACKGROUND_WORK_H
      9
     10#include <linux/vmalloc.h>
     11#include "dm-cache-policy.h"
     12
     13/*----------------------------------------------------------------*/
     14
     15struct background_work;
     16struct background_tracker;
     17
     18/*
     19 * FIXME: discuss lack of locking in all methods.
     20 */
     21struct background_tracker *btracker_create(unsigned max_work);
     22void btracker_destroy(struct background_tracker *b);
     23
     24unsigned btracker_nr_writebacks_queued(struct background_tracker *b);
     25unsigned btracker_nr_demotions_queued(struct background_tracker *b);
     26
     27/*
     28 * returns -EINVAL iff the work is already queued.  -ENOMEM if the work
     29 * couldn't be queued for another reason.
     30 */
     31int btracker_queue(struct background_tracker *b,
     32		   struct policy_work *work,
     33		   struct policy_work **pwork);
     34
     35/*
     36 * Returns -ENODATA if there's no work.
     37 */
     38int btracker_issue(struct background_tracker *b, struct policy_work **work);
     39void btracker_complete(struct background_tracker *b,
     40		       struct policy_work *op);
     41bool btracker_promotion_already_present(struct background_tracker *b,
     42					dm_oblock_t oblock);
     43
     44/*----------------------------------------------------------------*/
     45
     46#endif