diff options
Diffstat (limited to 'net/tipc/core.h')
| -rw-r--r-- | net/tipc/core.h | 231 | 
1 files changed, 38 insertions, 193 deletions
diff --git a/net/tipc/core.h b/net/tipc/core.h index ca7e171c104..bb26ed1ee96 100644 --- a/net/tipc/core.h +++ b/net/tipc/core.h @@ -1,8 +1,8 @@  /*   * net/tipc/core.h: Include file for TIPC global declarations   * - * Copyright (c) 2005-2006, Ericsson AB - * Copyright (c) 2005-2007, Wind River Systems + * Copyright (c) 2005-2006, 2013 Ericsson AB + * Copyright (c) 2005-2007, 2010-2013, Wind River Systems   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -37,6 +37,8 @@  #ifndef _TIPC_CORE_H  #define _TIPC_CORE_H +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/tipc.h>  #include <linux/tipc_config.h>  #include <linux/types.h> @@ -45,195 +47,71 @@  #include <linux/mm.h>  #include <linux/timer.h>  #include <linux/string.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h>  #include <linux/interrupt.h> -#include <asm/atomic.h> +#include <linux/atomic.h>  #include <asm/hardirq.h>  #include <linux/netdevice.h>  #include <linux/in.h>  #include <linux/list.h>  #include <linux/slab.h>  #include <linux/vmalloc.h> - +#include <linux/rtnetlink.h> +#include <linux/etherdevice.h>  #define TIPC_MOD_VER "2.0.0" -struct tipc_msg;	/* msg.h */ -struct print_buf;	/* dbg.h */ - -/* - * TIPC sanity test macros - */ - -#define assert(i)  BUG_ON(!(i)) - -/* - * TIPC system monitoring code - */ - -/* - * TIPC's print buffer subsystem supports the following print buffers: - * - * TIPC_NULL : null buffer (i.e. print nowhere) - * TIPC_CONS : system console - * TIPC_LOG  : TIPC log buffer - * &buf	     : user-defined buffer (struct print_buf *) - * - * Note: TIPC_LOG is configured to echo its output to the system console; - *       user-defined buffers can be configured to do the same thing. - */ -extern struct print_buf *const TIPC_NULL; -extern struct print_buf *const TIPC_LOG; - -void tipc_printf(struct print_buf *, const char *fmt, ...); +#define ULTRA_STRING_MAX_LEN	32768 +#define TIPC_MAX_SUBSCRIPTIONS	65535 +#define TIPC_MAX_PUBLICATIONS	65535 -/* - * TIPC_OUTPUT is the destination print buffer for system messages. - */ - -#ifndef TIPC_OUTPUT -#define TIPC_OUTPUT TIPC_LOG -#endif - -/* - * TIPC can be configured to send system messages to TIPC_OUTPUT - * or to the system console only. - */ - -#ifdef CONFIG_TIPC_DEBUG - -#define err(fmt, arg...)  tipc_printf(TIPC_OUTPUT, \ -					KERN_ERR "TIPC: " fmt, ## arg) -#define warn(fmt, arg...) tipc_printf(TIPC_OUTPUT, \ -					KERN_WARNING "TIPC: " fmt, ## arg) -#define info(fmt, arg...) tipc_printf(TIPC_OUTPUT, \ -					KERN_NOTICE "TIPC: " fmt, ## arg) - -#else - -#define err(fmt, arg...)  printk(KERN_ERR "TIPC: " fmt , ## arg) -#define info(fmt, arg...) printk(KERN_INFO "TIPC: " fmt , ## arg) -#define warn(fmt, arg...) printk(KERN_WARNING "TIPC: " fmt , ## arg) - -#endif - -/* - * DBG_OUTPUT is the destination print buffer for debug messages. - * It defaults to the the null print buffer, but can be redefined - * (typically in the individual .c files being debugged) to allow - * selected debug messages to be generated where needed. - */ - -#ifndef DBG_OUTPUT -#define DBG_OUTPUT TIPC_NULL -#endif - -/* - * TIPC can be configured to send debug messages to the specified print buffer - * (typically DBG_OUTPUT) or to suppress them entirely. - */ - -#ifdef CONFIG_TIPC_DEBUG - -#define dbg(fmt, arg...)  \ -	do { \ -		if (DBG_OUTPUT != TIPC_NULL) \ -			tipc_printf(DBG_OUTPUT, fmt, ## arg); \ -	} while (0) -#define msg_dbg(msg, txt) \ -	do { \ -		if (DBG_OUTPUT != TIPC_NULL) \ -			tipc_msg_dbg(DBG_OUTPUT, msg, txt); \ -	} while (0) -#define dump(fmt, arg...) \ -	do { \ -		if (DBG_OUTPUT != TIPC_NULL) \ -			tipc_dump_dbg(DBG_OUTPUT, fmt, ##arg); \ -	} while (0) - -void tipc_msg_dbg(struct print_buf *, struct tipc_msg *, const char *); -void tipc_dump_dbg(struct print_buf *, const char *fmt, ...); - -#else - -#define dbg(fmt, arg...)	do {} while (0) -#define msg_dbg(msg, txt)	do {} while (0) -#define dump(fmt, arg...)	do {} while (0) - -#define tipc_msg_dbg(...)	do {} while (0) -#define tipc_dump_dbg(...)	do {} while (0) - -#endif +struct tipc_msg;	/* msg.h */ +int tipc_snprintf(char *buf, int len, const char *fmt, ...);  /*   * TIPC-specific error codes   */ -  #define ELINKCONG EAGAIN	/* link congestion <=> resource unavailable */  /* - * TIPC operating mode routines - */ -#define TIPC_NOT_RUNNING  0 -#define TIPC_NODE_MODE    1 -#define TIPC_NET_MODE     2 - -/*   * Global configuration variables   */ - -extern u32 tipc_own_addr; -extern int tipc_max_zones; -extern int tipc_max_clusters; -extern int tipc_max_nodes; -extern int tipc_max_slaves; -extern int tipc_max_ports; -extern int tipc_max_subscriptions; -extern int tipc_max_publications; -extern int tipc_net_id; -extern int tipc_remote_management; +extern u32 tipc_own_addr __read_mostly; +extern int tipc_max_ports __read_mostly; +extern int tipc_net_id __read_mostly; +extern int sysctl_tipc_rmem[3] __read_mostly;  /*   * Other global variables   */ - -extern int tipc_mode; -extern int tipc_random; -extern const char tipc_alphabet[]; -extern atomic_t tipc_user_count; - +extern int tipc_random __read_mostly;  /*   * Routines available to privileged subsystems   */ - -extern int tipc_core_start_net(unsigned long); -extern int  tipc_handler_start(void); -extern void tipc_handler_stop(void); -extern int  tipc_netlink_start(void); -extern void tipc_netlink_stop(void); -extern int  tipc_socket_init(void); -extern void tipc_socket_stop(void); - -static inline int delimit(int val, int min, int max) -{ -	if (val > max) -		return max; -	if (val < min) -		return min; -	return val; -} - +int tipc_netlink_start(void); +void tipc_netlink_stop(void); +int tipc_socket_init(void); +void tipc_socket_stop(void); +int tipc_sock_create_local(int type, struct socket **res); +void tipc_sock_release_local(struct socket *sock); +int tipc_sock_accept_local(struct socket *sock, struct socket **newsock, +			   int flags); + +#ifdef CONFIG_SYSCTL +int tipc_register_sysctl(void); +void tipc_unregister_sysctl(void); +#else +#define tipc_register_sysctl() 0 +#define tipc_unregister_sysctl() +#endif  /* - * TIPC timer and signal code + * TIPC timer code   */ -  typedef void (*Handler) (unsigned long); -u32 tipc_k_signal(Handler routine, unsigned long argument); -  /**   * k_init_timer - initialize a timer   * @timer: pointer to timer structure @@ -242,11 +120,9 @@ u32 tipc_k_signal(Handler routine, unsigned long argument);   *   * Timer must be initialized before use (and terminated when no longer needed).   */ -  static inline void k_init_timer(struct timer_list *timer, Handler routine,  				unsigned long argument)  { -	dbg("initializing timer %p\n", timer);  	setup_timer(timer, routine, argument);  } @@ -263,10 +139,8 @@ static inline void k_init_timer(struct timer_list *timer, Handler routine,   * then an additional jiffy is added to account for the fact that   * the starting time may be in the middle of the current jiffy.   */ -  static inline void k_start_timer(struct timer_list *timer, unsigned long msec)  { -	dbg("starting timer %p for %u\n", timer, msec);  	mod_timer(timer, jiffies + msecs_to_jiffies(msec) + 1);  } @@ -280,10 +154,8 @@ static inline void k_start_timer(struct timer_list *timer, unsigned long msec)   * WARNING: Must not be called when holding locks required by the timer's   *          timeout routine, otherwise deadlock can occur on SMP systems!   */ -  static inline void k_cancel_timer(struct timer_list *timer)  { -	dbg("cancelling timer %p\n", timer);  	del_timer_sync(timer);  } @@ -298,13 +170,10 @@ static inline void k_cancel_timer(struct timer_list *timer)   * (Do not "enhance" this routine to automatically cancel an active timer,   * otherwise deadlock can arise when a timeout routine calls k_term_timer.)   */ -  static inline void k_term_timer(struct timer_list *timer)  { -	dbg("terminating timer %p\n", timer);  } -  /*   * TIPC message buffer code   * @@ -314,45 +183,21 @@ static inline void k_term_timer(struct timer_list *timer)   * Note: Headroom should be a multiple of 4 to ensure the TIPC header fields   *       are word aligned for quicker access   */ -  #define BUF_HEADROOM LL_MAX_HEADER  struct tipc_skb_cb {  	void *handle; +	bool deferred; +	struct sk_buff *tail;  };  #define TIPC_SKB_CB(__skb) ((struct tipc_skb_cb *)&((__skb)->cb[0])) -  static inline struct tipc_msg *buf_msg(struct sk_buff *skb)  {  	return (struct tipc_msg *)skb->data;  } -extern struct sk_buff *tipc_buf_acquire(u32 size); - -/** - * buf_discard - frees a TIPC message buffer - * @skb: message buffer - * - * Frees a message buffer.  If passed NULL, just returns. - */ - -static inline void buf_discard(struct sk_buff *skb) -{ -	kfree_skb(skb); -} - -/** - * buf_linearize - convert a TIPC message buffer into a single contiguous piece - * @skb: message buffer - * - * Returns 0 on success. - */ - -static inline int buf_linearize(struct sk_buff *skb) -{ -	return skb_linearize(skb); -} +struct sk_buff *tipc_buf_acquire(u32 size);  #endif  | 
