Index: kernel/genarch/include/genarch/mm/page_ht.h
===================================================================
--- kernel/genarch/include/genarch/mm/page_ht.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/include/genarch/mm/page_ht.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -57,10 +57,10 @@
 #define PTE_EXECUTABLE(pte)  ((pte)->x != 0)
 
-extern as_operations_t as_ht_operations;
-extern page_mapping_operations_t ht_mapping_operations;
+extern const as_operations_t as_ht_operations;
+extern const page_mapping_operations_t ht_mapping_operations;
 
 extern slab_cache_t *pte_cache;
 extern hash_table_t page_ht;
-extern hash_table_ops_t ht_ops;
+extern const hash_table_ops_t ht_ops;
 
 #endif
Index: kernel/genarch/include/genarch/mm/page_pt.h
===================================================================
--- kernel/genarch/include/genarch/mm/page_pt.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/include/genarch/mm/page_pt.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -140,6 +140,6 @@
 #define PTE_EXECUTABLE(p)  PTE_EXECUTABLE_ARCH((p))
 
-extern as_operations_t as_pt_operations;
-extern page_mapping_operations_t pt_mapping_operations;
+extern const as_operations_t as_pt_operations;
+extern const page_mapping_operations_t pt_mapping_operations;
 
 extern void page_mapping_insert_pt(as_t *, uintptr_t, uintptr_t, unsigned int);
Index: kernel/genarch/src/mm/as_ht.c
===================================================================
--- kernel/genarch/src/mm/as_ht.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/src/mm/as_ht.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -53,5 +53,5 @@
 static bool ht_locked(as_t *);
 
-as_operations_t as_ht_operations = {
+const as_operations_t as_ht_operations = {
 	.page_table_create = ht_create,
 	.page_table_destroy = ht_destroy,
Index: kernel/genarch/src/mm/as_pt.c
===================================================================
--- kernel/genarch/src/mm/as_pt.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/src/mm/as_pt.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -54,5 +54,5 @@
 static bool pt_locked(as_t *);
 
-as_operations_t as_pt_operations = {
+const as_operations_t as_pt_operations = {
 	.page_table_create = ptl0_create,
 	.page_table_destroy = ptl0_destroy,
Index: kernel/genarch/src/mm/page_ht.c
===================================================================
--- kernel/genarch/src/mm/page_ht.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/src/mm/page_ht.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -82,5 +82,5 @@
 
 /** Hash table operations for page hash table. */
-hash_table_ops_t ht_ops = {
+const hash_table_ops_t ht_ops = {
 	.hash = ht_hash,
 	.key_hash = ht_key_hash,
@@ -90,5 +90,5 @@
 
 /** Page mapping operations for page hash table architectures. */
-page_mapping_operations_t ht_mapping_operations = {
+const page_mapping_operations_t ht_mapping_operations = {
 	.mapping_insert = ht_mapping_insert,
 	.mapping_remove = ht_mapping_remove,
Index: kernel/genarch/src/mm/page_pt.c
===================================================================
--- kernel/genarch/src/mm/page_pt.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/genarch/src/mm/page_pt.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -58,5 +58,5 @@
 static void pt_mapping_make_global(uintptr_t, size_t);
 
-page_mapping_operations_t pt_mapping_operations = {
+const page_mapping_operations_t pt_mapping_operations = {
 	.mapping_insert = pt_mapping_insert,
 	.mapping_remove = pt_mapping_remove,
Index: kernel/generic/include/adt/hash_table.h
===================================================================
--- kernel/generic/include/adt/hash_table.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/include/adt/hash_table.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -73,5 +73,5 @@
 /** Hash table structure. */
 typedef struct {
-	hash_table_ops_t *op;
+	const hash_table_ops_t *op;
 	list_t *bucket;
 	size_t bucket_cnt;
@@ -86,5 +86,5 @@
 
 extern bool hash_table_create(hash_table_t *, size_t, size_t,
-    hash_table_ops_t *);
+    const hash_table_ops_t *);
 extern void hash_table_destroy(hash_table_t *);
 
Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/include/mm/as.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -307,5 +307,5 @@
 extern as_t *AS_KERNEL;
 
-extern as_operations_t *as_operations;
+extern const as_operations_t *as_operations;
 extern list_t inactive_as_with_asid_list;
 
Index: kernel/generic/include/mm/page.h
===================================================================
--- kernel/generic/include/mm/page.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/include/mm/page.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -53,5 +53,5 @@
 } page_mapping_operations_t;
 
-extern page_mapping_operations_t *page_mapping_operations;
+extern const page_mapping_operations_t *page_mapping_operations;
 
 extern void page_init(void);
Index: kernel/generic/src/adt/hash_table.c
===================================================================
--- kernel/generic/src/adt/hash_table.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/adt/hash_table.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -90,5 +90,5 @@
  */
 bool hash_table_create(hash_table_t *h, size_t init_size, size_t max_load,
-    hash_table_ops_t *op)
+    const hash_table_ops_t *op)
 {
 	assert(h);
@@ -110,8 +110,4 @@
 	h->apply_ongoing = false;
 
-	if (h->op->remove_callback == NULL) {
-		h->op->remove_callback = nop_remove_callback;
-	}
-
 	return true;
 }
@@ -171,4 +167,6 @@
 	if (h->item_cnt == 0)
 		return;
+
+	void (*remove_cb)(ht_link_t *) = h->op->remove_callback ? h->op->remove_callback : nop_remove_callback;
 
 	for (size_t idx = 0; idx < h->bucket_cnt; ++idx) {
@@ -178,5 +176,5 @@
 
 			list_remove(cur);
-			h->op->remove_callback(cur_link);
+			remove_cb(cur_link);
 		}
 	}
@@ -321,5 +319,7 @@
 			++removed;
 			list_remove(cur);
-			h->op->remove_callback(cur_link);
+
+			if (h->op->remove_callback)
+				h->op->remove_callback(cur_link);
 		}
 	}
@@ -340,5 +340,7 @@
 	list_remove(&item->link);
 	--h->item_cnt;
-	h->op->remove_callback(item);
+
+	if (h->op->remove_callback)
+		h->op->remove_callback(item);
 	shrink_if_needed(h);
 }
Index: kernel/generic/src/cap/cap.c
===================================================================
--- kernel/generic/src/cap/cap.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/cap/cap.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -125,5 +125,5 @@
 }
 
-static hash_table_ops_t caps_ops = {
+static const hash_table_ops_t caps_ops = {
 	.hash = caps_hash,
 	.key_hash = caps_key_hash,
Index: kernel/generic/src/ddi/irq.c
===================================================================
--- kernel/generic/src/ddi/irq.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/ddi/irq.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -77,5 +77,5 @@
 static bool irq_ht_key_equal(const void *, const ht_link_t *);
 
-static hash_table_ops_t irq_ht_ops = {
+static const hash_table_ops_t irq_ht_ops = {
 	.hash = irq_ht_hash,
 	.key_hash = irq_ht_key_hash,
Index: kernel/generic/src/lib/ra.c
===================================================================
--- kernel/generic/src/lib/ra.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/lib/ra.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -81,5 +81,5 @@
 }
 
-static hash_table_ops_t used_ops = {
+static const hash_table_ops_t used_ops = {
 	.hash = used_hash,
 	.key_hash = used_key_hash,
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/mm/as.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -86,5 +86,5 @@
  * address space operations such as creating or locking page tables.
  */
-as_operations_t *as_operations = NULL;
+const as_operations_t *as_operations = NULL;
 
 /** Cache for as_t objects */
Index: kernel/generic/src/mm/page.c
===================================================================
--- kernel/generic/src/mm/page.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ kernel/generic/src/mm/page.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -76,5 +76,5 @@
 
 /** Virtual operations for page subsystem. */
-page_mapping_operations_t *page_mapping_operations = NULL;
+const page_mapping_operations_t *page_mapping_operations = NULL;
 
 void page_init(void)
Index: uspace/app/hbench/env.c
===================================================================
--- uspace/app/hbench/env.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/app/hbench/env.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -81,5 +81,5 @@
 }
 
-static hash_table_ops_t param_hash_table_ops = {
+static const hash_table_ops_t param_hash_table_ops = {
 	.hash = param_hash,
 	.key_hash = param_key_hash,
Index: uspace/app/trace/ipcp.c
===================================================================
--- uspace/app/trace/ipcp.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/app/trace/ipcp.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -92,5 +92,5 @@
 }
 
-static hash_table_ops_t pending_call_ops = {
+static const hash_table_ops_t pending_call_ops = {
 	.hash = pending_call_hash,
 	.key_hash = pending_call_key_hash,
Index: uspace/app/trace/proto.c
===================================================================
--- uspace/app/trace/proto.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/app/trace/proto.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -76,5 +76,5 @@
 }
 
-static hash_table_ops_t srv_proto_ops = {
+static const hash_table_ops_t srv_proto_ops = {
 	.hash = srv_proto_hash,
 	.key_hash = srv_proto_key_hash,
@@ -103,5 +103,5 @@
 }
 
-static hash_table_ops_t method_oper_ops = {
+static const hash_table_ops_t method_oper_ops = {
 	.hash = method_oper_hash,
 	.key_hash = method_oper_key_hash,
Index: uspace/lib/block/block.c
===================================================================
--- uspace/lib/block/block.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/block/block.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -260,5 +260,5 @@
 }
 
-static hash_table_ops_t cache_ops = {
+static const hash_table_ops_t cache_ops = {
 	.hash = cache_hash,
 	.key_hash = cache_key_hash,
Index: uspace/lib/c/generic/adt/hash_table.c
===================================================================
--- uspace/lib/c/generic/adt/hash_table.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/c/generic/adt/hash_table.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -91,5 +91,5 @@
  */
 bool hash_table_create(hash_table_t *h, size_t init_size, size_t max_load,
-    hash_table_ops_t *op)
+    const hash_table_ops_t *op)
 {
 	assert(h);
@@ -111,8 +111,4 @@
 	h->apply_ongoing = false;
 
-	if (h->op->remove_callback == NULL) {
-		h->op->remove_callback = nop_remove_callback;
-	}
-
 	return true;
 }
@@ -172,4 +168,6 @@
 	if (h->item_cnt == 0)
 		return;
+
+	void (*remove_cb)(ht_link_t *) = h->op->remove_callback ? h->op->remove_callback : nop_remove_callback;
 
 	for (size_t idx = 0; idx < h->bucket_cnt; ++idx) {
@@ -179,5 +177,5 @@
 
 			list_remove(cur);
-			h->op->remove_callback(cur_link);
+			remove_cb(cur_link);
 		}
 	}
@@ -322,5 +320,7 @@
 			++removed;
 			list_remove(cur);
-			h->op->remove_callback(cur_link);
+
+			if (h->op->remove_callback)
+				h->op->remove_callback(cur_link);
 		}
 	}
@@ -341,5 +341,7 @@
 	list_remove(&item->link);
 	--h->item_cnt;
-	h->op->remove_callback(item);
+
+	if (h->op->remove_callback)
+		h->op->remove_callback(item);
 	shrink_if_needed(h);
 }
Index: uspace/lib/c/generic/async/ports.c
===================================================================
--- uspace/lib/c/generic/async/ports.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/c/generic/async/ports.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -123,5 +123,5 @@
 
 /** Operations for the port hash table. */
-static hash_table_ops_t interface_hash_table_ops = {
+static const hash_table_ops_t interface_hash_table_ops = {
 	.hash = interface_hash,
 	.key_hash = interface_key_hash,
@@ -151,5 +151,5 @@
 
 /** Operations for the port hash table. */
-static hash_table_ops_t port_hash_table_ops = {
+static const hash_table_ops_t port_hash_table_ops = {
 	.hash = port_hash,
 	.key_hash = port_key_hash,
Index: uspace/lib/c/generic/async/server.c
===================================================================
--- uspace/lib/c/generic/async/server.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/c/generic/async/server.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -250,5 +250,5 @@
 
 /** Operations for the client hash table. */
-static hash_table_ops_t client_hash_table_ops = {
+static const hash_table_ops_t client_hash_table_ops = {
 	.hash = client_hash,
 	.key_hash = client_key_hash,
@@ -511,5 +511,5 @@
 
 /** Operations for the notification hash table. */
-static hash_table_ops_t notification_hash_table_ops = {
+static const hash_table_ops_t notification_hash_table_ops = {
 	.hash = notification_hash,
 	.key_hash = notification_key_hash,
Index: uspace/lib/c/include/adt/hash_table.h
===================================================================
--- uspace/lib/c/include/adt/hash_table.h	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/c/include/adt/hash_table.h	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -73,5 +73,5 @@
 /** Hash table structure. */
 typedef struct {
-	hash_table_ops_t *op;
+	const hash_table_ops_t *op;
 	list_t *bucket;
 	size_t bucket_cnt;
@@ -86,5 +86,5 @@
 
 extern bool hash_table_create(hash_table_t *, size_t, size_t,
-    hash_table_ops_t *);
+    const hash_table_ops_t *);
 extern void hash_table_destroy(hash_table_t *);
 
Index: uspace/lib/ext4/src/ops.c
===================================================================
--- uspace/lib/ext4/src/ops.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/ext4/src/ops.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -122,5 +122,5 @@
 }
 
-static hash_table_ops_t open_nodes_ops = {
+static const hash_table_ops_t open_nodes_ops = {
 	.hash = open_nodes_hash,
 	.key_hash = open_nodes_key_hash,
Index: uspace/lib/nic/src/nic_addr_db.c
===================================================================
--- uspace/lib/nic/src/nic_addr_db.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/lib/nic/src/nic_addr_db.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -102,5 +102,5 @@
 }
 
-static hash_table_ops_t set_ops = {
+static const hash_table_ops_t set_ops = {
 	.hash = nic_addr_hash,
 	.key_hash = nic_addr_key_hash,
Index: uspace/srv/devman/devtree.c
===================================================================
--- uspace/srv/devman/devtree.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/devman/devtree.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -93,5 +93,5 @@
 }
 
-static hash_table_ops_t devman_devices_ops = {
+static const hash_table_ops_t devman_devices_ops = {
 	.hash = devman_devices_hash,
 	.key_hash = handle_key_hash,
@@ -101,5 +101,5 @@
 };
 
-static hash_table_ops_t devman_functions_ops = {
+static const hash_table_ops_t devman_functions_ops = {
 	.hash = devman_functions_hash,
 	.key_hash = handle_key_hash,
@@ -109,5 +109,5 @@
 };
 
-static hash_table_ops_t loc_devices_ops = {
+static const hash_table_ops_t loc_devices_ops = {
 	.hash = loc_functions_hash,
 	.key_hash = service_id_key_hash,
Index: uspace/srv/fs/cdfs/cdfs_ops.c
===================================================================
--- uspace/srv/fs/cdfs/cdfs_ops.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/cdfs/cdfs_ops.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -323,5 +323,5 @@
 
 /** Nodes hash table operations */
-static hash_table_ops_t nodes_ops = {
+static const hash_table_ops_t nodes_ops = {
 	.hash = nodes_hash,
 	.key_hash = nodes_key_hash,
Index: uspace/srv/fs/exfat/exfat_idx.c
===================================================================
--- uspace/srv/fs/exfat/exfat_idx.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/exfat/exfat_idx.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -149,5 +149,5 @@
 }
 
-static hash_table_ops_t uph_ops = {
+static const hash_table_ops_t uph_ops = {
 	.hash = pos_hash,
 	.key_hash = pos_key_hash,
@@ -195,5 +195,5 @@
 }
 
-static hash_table_ops_t uih_ops = {
+static const hash_table_ops_t uih_ops = {
 	.hash = idx_hash,
 	.key_hash = idx_key_hash,
Index: uspace/srv/fs/fat/fat_idx.c
===================================================================
--- uspace/srv/fs/fat/fat_idx.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/fat/fat_idx.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -149,5 +149,5 @@
 }
 
-static hash_table_ops_t uph_ops = {
+static const hash_table_ops_t uph_ops = {
 	.hash = pos_hash,
 	.key_hash = pos_key_hash,
@@ -195,5 +195,5 @@
 }
 
-static hash_table_ops_t uih_ops = {
+static const hash_table_ops_t uih_ops = {
 	.hash = idx_hash,
 	.key_hash = idx_key_hash,
Index: uspace/srv/fs/locfs/locfs_ops.c
===================================================================
--- uspace/srv/fs/locfs/locfs_ops.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/locfs/locfs_ops.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -95,5 +95,5 @@
 }
 
-static hash_table_ops_t services_ops = {
+static const hash_table_ops_t services_ops = {
 	.hash = services_hash,
 	.key_hash = services_key_hash,
Index: uspace/srv/fs/mfs/mfs_ops.c
===================================================================
--- uspace/srv/fs/mfs/mfs_ops.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/mfs/mfs_ops.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -123,5 +123,5 @@
 }
 
-static hash_table_ops_t open_nodes_ops = {
+static const hash_table_ops_t open_nodes_ops = {
 	.hash = open_nodes_hash,
 	.key_hash = open_nodes_key_hash,
Index: uspace/srv/fs/tmpfs/tmpfs_ops.c
===================================================================
--- uspace/srv/fs/tmpfs/tmpfs_ops.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/tmpfs/tmpfs_ops.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -189,5 +189,5 @@
 
 /** TMPFS nodes hash table operations. */
-hash_table_ops_t nodes_ops = {
+const hash_table_ops_t nodes_ops = {
 	.hash = nodes_hash,
 	.key_hash = nodes_key_hash,
Index: uspace/srv/fs/udf/udf_idx.c
===================================================================
--- uspace/srv/fs/udf/udf_idx.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/fs/udf/udf_idx.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -78,5 +78,5 @@
 }
 
-static hash_table_ops_t udf_idx_ops = {
+static const hash_table_ops_t udf_idx_ops = {
 	.hash = udf_idx_hash,
 	.key_hash = udf_idx_key_hash,
Index: uspace/srv/hid/input/gsp.c
===================================================================
--- uspace/srv/hid/input/gsp.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/hid/input/gsp.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -84,5 +84,5 @@
 }
 
-static hash_table_ops_t trans_ops = {
+static const hash_table_ops_t trans_ops = {
 	.hash = trans_hash,
 	.key_hash = trans_key_hash,
Index: uspace/srv/ns/service.c
===================================================================
--- uspace/srv/ns/service.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/ns/service.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -112,5 +112,5 @@
 
 /** Operations for service hash table. */
-static hash_table_ops_t service_hash_table_ops = {
+static const hash_table_ops_t service_hash_table_ops = {
 	.hash = service_hash,
 	.key_hash = service_key_hash,
@@ -121,5 +121,5 @@
 
 /** Operations for interface hash table. */
-static hash_table_ops_t iface_hash_table_ops = {
+static const hash_table_ops_t iface_hash_table_ops = {
 	.hash = iface_hash,
 	.key_hash = iface_key_hash,
Index: uspace/srv/ns/task.c
===================================================================
--- uspace/srv/ns/task.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/ns/task.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -80,5 +80,5 @@
 
 /** Operations for task hash table. */
-static hash_table_ops_t task_hash_table_ops = {
+static const hash_table_ops_t task_hash_table_ops = {
 	.hash = task_hash,
 	.key_hash = task_key_hash,
@@ -131,5 +131,5 @@
 
 /** Operations for task hash table. */
-static hash_table_ops_t p2i_ops = {
+static const hash_table_ops_t p2i_ops = {
 	.hash = p2i_hash,
 	.key_hash = p2i_key_hash,
Index: uspace/srv/vfs/vfs_node.c
===================================================================
--- uspace/srv/vfs/vfs_node.c	(revision 07700ed3d2b66620df46048653f02a93175406ca)
+++ uspace/srv/vfs/vfs_node.c	(revision 61eb2ce2769cc7e957b2ee93ca59919d895a7999)
@@ -66,5 +66,5 @@
 
 /** VFS node hash table operations. */
-hash_table_ops_t nodes_ops = {
+const hash_table_ops_t nodes_ops = {
 	.hash = nodes_hash,
 	.key_hash = nodes_key_hash,
