brintos

brintos / linux-shallow public Read only

0
0
Text · 2.9 KiB · 3c8cccc Raw
77 lines · c
1/*2 * include/linux/parman.h - Manager for linear priority array areas3 * Copyright (c) 2017 Mellanox Technologies. All rights reserved.4 * Copyright (c) 2017 Jiri Pirko <jiri@mellanox.com>5 *6 * Redistribution and use in source and binary forms, with or without7 * modification, are permitted provided that the following conditions are met:8 *9 * 1. Redistributions of source code must retain the above copyright10 *    notice, this list of conditions and the following disclaimer.11 * 2. Redistributions in binary form must reproduce the above copyright12 *    notice, this list of conditions and the following disclaimer in the13 *    documentation and/or other materials provided with the distribution.14 * 3. Neither the names of the copyright holders nor the names of its15 *    contributors may be used to endorse or promote products derived from16 *    this software without specific prior written permission.17 *18 * Alternatively, this software may be distributed under the terms of the19 * GNU General Public License ("GPL") version 2 as published by the Free20 * Software Foundation.21 *22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE32 * POSSIBILITY OF SUCH DAMAGE.33 */34 35#ifndef _PARMAN_H36#define _PARMAN_H37 38#include <linux/list.h>39 40enum parman_algo_type {41	PARMAN_ALGO_TYPE_LSORT,42};43 44struct parman_item {45	struct list_head list;46	unsigned long index;47};48 49struct parman_prio {50	struct list_head list;51	struct list_head item_list;52	unsigned long priority;53};54 55struct parman_ops {56	unsigned long base_count;57	unsigned long resize_step;58	int (*resize)(void *priv, unsigned long new_count);59	void (*move)(void *priv, unsigned long from_index,60		     unsigned long to_index, unsigned long count);61	enum parman_algo_type algo;62};63 64struct parman;65 66struct parman *parman_create(const struct parman_ops *ops, void *priv);67void parman_destroy(struct parman *parman);68void parman_prio_init(struct parman *parman, struct parman_prio *prio,69		      unsigned long priority);70void parman_prio_fini(struct parman_prio *prio);71int parman_item_add(struct parman *parman, struct parman_prio *prio,72		    struct parman_item *item);73void parman_item_remove(struct parman *parman, struct parman_prio *prio,74			struct parman_item *item);75 76#endif77