diff options
| author | Allan Stephens <allan.stephens@windriver.com> | 2010-05-11 10:30:14 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-05-13 02:02:27 -0400 |
| commit | 3e22e62b6204414cf31c414d5a91897e2b718135 (patch) | |
| tree | c41ccb573b4c1b91645d8a7671e250cbbc1e7e8e /net | |
| parent | 80e0c33064bd71bd5791c79f28c59a1aee898993 (diff) | |
tipc: Reduce footprint by un-inlining nmap routines
Converts nmap inline routines that are more than one line into standard
functions, thereby eliminating a significant amount of repeated code.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/tipc/bcast.c | 60 | ||||
| -rw-r--r-- | net/tipc/bcast.h | 63 |
2 files changed, 64 insertions, 59 deletions
diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c index a8f22e78c3f3..1ee6424ef3e0 100644 --- a/net/tipc/bcast.c +++ b/net/tipc/bcast.c | |||
| @@ -822,3 +822,63 @@ void tipc_bclink_stop(void) | |||
| 822 | spin_unlock_bh(&bc_lock); | 822 | spin_unlock_bh(&bc_lock); |
| 823 | } | 823 | } |
| 824 | 824 | ||
| 825 | |||
| 826 | /** | ||
| 827 | * tipc_nmap_add - add a node to a node map | ||
| 828 | */ | ||
| 829 | |||
| 830 | void tipc_nmap_add(struct tipc_node_map *nm_ptr, u32 node) | ||
| 831 | { | ||
| 832 | int n = tipc_node(node); | ||
| 833 | int w = n / WSIZE; | ||
| 834 | u32 mask = (1 << (n % WSIZE)); | ||
| 835 | |||
| 836 | if ((nm_ptr->map[w] & mask) == 0) { | ||
| 837 | nm_ptr->count++; | ||
| 838 | nm_ptr->map[w] |= mask; | ||
| 839 | } | ||
| 840 | } | ||
| 841 | |||
| 842 | /** | ||
| 843 | * tipc_nmap_remove - remove a node from a node map | ||
| 844 | */ | ||
| 845 | |||
| 846 | void tipc_nmap_remove(struct tipc_node_map *nm_ptr, u32 node) | ||
| 847 | { | ||
| 848 | int n = tipc_node(node); | ||
| 849 | int w = n / WSIZE; | ||
| 850 | u32 mask = (1 << (n % WSIZE)); | ||
| 851 | |||
| 852 | if ((nm_ptr->map[w] & mask) != 0) { | ||
| 853 | nm_ptr->map[w] &= ~mask; | ||
| 854 | nm_ptr->count--; | ||
| 855 | } | ||
| 856 | } | ||
| 857 | |||
| 858 | /** | ||
| 859 | * tipc_nmap_diff - find differences between node maps | ||
| 860 | * @nm_a: input node map A | ||
| 861 | * @nm_b: input node map B | ||
| 862 | * @nm_diff: output node map A-B (i.e. nodes of A that are not in B) | ||
| 863 | */ | ||
| 864 | |||
| 865 | void tipc_nmap_diff(struct tipc_node_map *nm_a, struct tipc_node_map *nm_b, | ||
| 866 | struct tipc_node_map *nm_diff) | ||
| 867 | { | ||
| 868 | int stop = ARRAY_SIZE(nm_a->map); | ||
| 869 | int w; | ||
| 870 | int b; | ||
| 871 | u32 map; | ||
| 872 | |||
| 873 | memset(nm_diff, 0, sizeof(*nm_diff)); | ||
| 874 | for (w = 0; w < stop; w++) { | ||
| 875 | map = nm_a->map[w] ^ (nm_a->map[w] & nm_b->map[w]); | ||
| 876 | nm_diff->map[w] = map; | ||
| 877 | if (map != 0) { | ||
| 878 | for (b = 0 ; b < WSIZE; b++) { | ||
| 879 | if (map & (1 << b)) | ||
| 880 | nm_diff->count++; | ||
| 881 | } | ||
| 882 | } | ||
| 883 | } | ||
| 884 | } | ||
diff --git a/net/tipc/bcast.h b/net/tipc/bcast.h index 2b1c4a755dfa..cd779816383f 100644 --- a/net/tipc/bcast.h +++ b/net/tipc/bcast.h | |||
| @@ -72,38 +72,8 @@ struct tipc_node; | |||
| 72 | 72 | ||
| 73 | extern const char tipc_bclink_name[]; | 73 | extern const char tipc_bclink_name[]; |
| 74 | 74 | ||
| 75 | 75 | void tipc_nmap_add(struct tipc_node_map *nm_ptr, u32 node); | |
| 76 | /** | 76 | void tipc_nmap_remove(struct tipc_node_map *nm_ptr, u32 node); |
| 77 | * tipc_nmap_add - add a node to a node map | ||
| 78 | */ | ||
| 79 | |||
| 80 | static inline void tipc_nmap_add(struct tipc_node_map *nm_ptr, u32 node) | ||
| 81 | { | ||
| 82 | int n = tipc_node(node); | ||
| 83 | int w = n / WSIZE; | ||
| 84 | u32 mask = (1 << (n % WSIZE)); | ||
| 85 | |||
| 86 | if ((nm_ptr->map[w] & mask) == 0) { | ||
| 87 | nm_ptr->count++; | ||
| 88 | nm_ptr->map[w] |= mask; | ||
| 89 | } | ||
| 90 | } | ||
| 91 | |||
| 92 | /** | ||
| 93 | * tipc_nmap_remove - remove a node from a node map | ||
| 94 | */ | ||
| 95 | |||
| 96 | static inline void tipc_nmap_remove(struct tipc_node_map *nm_ptr, u32 node) | ||
| 97 | { | ||
| 98 | int n = tipc_node(node); | ||
| 99 | int w = n / WSIZE; | ||
| 100 | u32 mask = (1 << (n % WSIZE)); | ||
| 101 | |||
| 102 | if ((nm_ptr->map[w] & mask) != 0) { | ||
| 103 | nm_ptr->map[w] &= ~mask; | ||
| 104 | nm_ptr->count--; | ||
| 105 | } | ||
| 106 | } | ||
| 107 | 77 | ||
| 108 | /** | 78 | /** |
| 109 | * tipc_nmap_equal - test for equality of node maps | 79 | * tipc_nmap_equal - test for equality of node maps |
| @@ -114,33 +84,8 @@ static inline int tipc_nmap_equal(struct tipc_node_map *nm_a, struct tipc_node_m | |||
| 114 | return !memcmp(nm_a, nm_b, sizeof(*nm_a)); | 84 | return !memcmp(nm_a, nm_b, sizeof(*nm_a)); |
| 115 | } | 85 | } |
| 116 | 86 | ||
| 117 | /** | 87 | void tipc_nmap_diff(struct tipc_node_map *nm_a, struct tipc_node_map *nm_b, |
| 118 | * tipc_nmap_diff - find differences between node maps | 88 | struct tipc_node_map *nm_diff); |
| 119 | * @nm_a: input node map A | ||
| 120 | * @nm_b: input node map B | ||
| 121 | * @nm_diff: output node map A-B (i.e. nodes of A that are not in B) | ||
| 122 | */ | ||
| 123 | |||
| 124 | static inline void tipc_nmap_diff(struct tipc_node_map *nm_a, struct tipc_node_map *nm_b, | ||
| 125 | struct tipc_node_map *nm_diff) | ||
| 126 | { | ||
| 127 | int stop = ARRAY_SIZE(nm_a->map); | ||
| 128 | int w; | ||
| 129 | int b; | ||
| 130 | u32 map; | ||
| 131 | |||
| 132 | memset(nm_diff, 0, sizeof(*nm_diff)); | ||
| 133 | for (w = 0; w < stop; w++) { | ||
| 134 | map = nm_a->map[w] ^ (nm_a->map[w] & nm_b->map[w]); | ||
| 135 | nm_diff->map[w] = map; | ||
| 136 | if (map != 0) { | ||
| 137 | for (b = 0 ; b < WSIZE; b++) { | ||
| 138 | if (map & (1 << b)) | ||
| 139 | nm_diff->count++; | ||
| 140 | } | ||
| 141 | } | ||
| 142 | } | ||
| 143 | } | ||
| 144 | 89 | ||
| 145 | /** | 90 | /** |
| 146 | * tipc_port_list_add - add a port to a port list, ensuring no duplicates | 91 | * tipc_port_list_add - add a port to a port list, ensuring no duplicates |
