+/**
+ * Recursively freezes the object \p object.
+ *
+ * A frozen object cannot be modified; it is considered immutable.
+ * Reference counting still works on a frozen object though: you may
+ * pass a frozen object to bt_object_get() and bt_object_put().
+ *
+ * @param object Object to freeze
+ * @returns One of #bt_object_status values; if \p object
+ * is already frozen, though, #BT_OBJECT_STATUS_OK
+ * is returned anyway (i.e. this function never
+ * returns #BT_OBJECT_STATUS_FROZEN)
+ *
+ * @see bt_object_is_frozen()
+ */
+extern enum bt_object_status bt_object_freeze(struct bt_object *object);
+
+/**
+ * Checks whether \p object is frozen or not.
+ *
+ * @param object Object to check
+ * @returns \c true if \p object is frozen
+ *
+ * @see bt_object_freeze()
+ */
+extern bool bt_object_is_frozen(const struct bt_object *object);
+