| Mark Fasheh | ccd979b | 2005-12-15 14:31:24 -0800 | [diff] [blame] | 1 | /* -*- mode: c; c-basic-offset: 8; -*- | 
 | 2 |  * vim: noexpandtab sw=8 ts=8 sts=0: | 
 | 3 |  * | 
 | 4 |  * heartbeat.h | 
 | 5 |  * | 
 | 6 |  * Function prototypes | 
 | 7 |  * | 
 | 8 |  * Copyright (C) 2002, 2004 Oracle.  All rights reserved. | 
 | 9 |  * | 
 | 10 |  * This program is free software; you can redistribute it and/or | 
 | 11 |  * modify it under the terms of the GNU General Public | 
 | 12 |  * License as published by the Free Software Foundation; either | 
 | 13 |  * version 2 of the License, or (at your option) any later version. | 
 | 14 |  * | 
 | 15 |  * This program is distributed in the hope that it will be useful, | 
 | 16 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | 17 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 | 18 |  * General Public License for more details. | 
 | 19 |  * | 
 | 20 |  * You should have received a copy of the GNU General Public | 
 | 21 |  * License along with this program; if not, write to the | 
 | 22 |  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 
 | 23 |  * Boston, MA 021110-1307, USA. | 
 | 24 |  */ | 
 | 25 |  | 
 | 26 | #ifndef OCFS2_HEARTBEAT_H | 
 | 27 | #define OCFS2_HEARTBEAT_H | 
 | 28 |  | 
 | 29 | void ocfs2_init_node_maps(struct ocfs2_super *osb); | 
 | 30 |  | 
 | 31 | void ocfs2_setup_hb_callbacks(struct ocfs2_super *osb); | 
 | 32 | int ocfs2_register_hb_callbacks(struct ocfs2_super *osb); | 
 | 33 | void ocfs2_clear_hb_callbacks(struct ocfs2_super *osb); | 
 | 34 | void ocfs2_stop_heartbeat(struct ocfs2_super *osb); | 
 | 35 |  | 
 | 36 | /* node map functions - used to keep track of mounted and in-recovery | 
 | 37 |  * nodes. */ | 
 | 38 | void ocfs2_node_map_init(struct ocfs2_node_map *map); | 
 | 39 | int ocfs2_node_map_is_empty(struct ocfs2_super *osb, | 
 | 40 | 			    struct ocfs2_node_map *map); | 
 | 41 | void ocfs2_node_map_set_bit(struct ocfs2_super *osb, | 
 | 42 | 			    struct ocfs2_node_map *map, | 
 | 43 | 			    int bit); | 
 | 44 | void ocfs2_node_map_clear_bit(struct ocfs2_super *osb, | 
 | 45 | 			      struct ocfs2_node_map *map, | 
 | 46 | 			      int bit); | 
 | 47 | int ocfs2_node_map_test_bit(struct ocfs2_super *osb, | 
 | 48 | 			    struct ocfs2_node_map *map, | 
 | 49 | 			    int bit); | 
 | 50 | int ocfs2_node_map_iterate(struct ocfs2_super *osb, | 
 | 51 | 			   struct ocfs2_node_map *map, | 
 | 52 | 			   int idx); | 
 | 53 | static inline int ocfs2_node_map_first_set_bit(struct ocfs2_super *osb, | 
 | 54 | 					       struct ocfs2_node_map *map) | 
 | 55 | { | 
 | 56 | 	return ocfs2_node_map_iterate(osb, map, 0); | 
 | 57 | } | 
 | 58 | int ocfs2_recovery_map_set(struct ocfs2_super *osb, | 
 | 59 | 			   int num); | 
 | 60 | void ocfs2_recovery_map_clear(struct ocfs2_super *osb, | 
 | 61 | 			      int num); | 
 | 62 | /* returns 1 if bit is the only bit set in target, 0 otherwise */ | 
 | 63 | int ocfs2_node_map_is_only(struct ocfs2_super *osb, | 
 | 64 | 			   struct ocfs2_node_map *target, | 
 | 65 | 			   int bit); | 
 | 66 |  | 
 | 67 | #endif /* OCFS2_HEARTBEAT_H */ |