/* * This file is produced automatically. * Do not modify anything in here by hand. * * Created from source file * freebsd-org/sys/dev/ofw/ofw_if.m * with * makeobjops.awk * * See the source file for legal information */ /** * @defgroup OFW ofw - KObj methods for Open Firmware RTAS implementations * @brief A set of methods to implement the Open Firmware client side interface. * @{ */ #ifndef _ofw_if_h_ #define _ofw_if_h_ /** @brief Unique descriptor for the OFW_INIT() method */ extern struct kobjop_desc ofw_init_desc; /** @brief A function implementing the OFW_INIT() method */ typedef int ofw_init_t(ofw_t _ofw, void *_cookie); /** * @brief Initialize OFW client interface * * @param _cookie A handle to the client interface, generally the OF * callback routine. */ static __inline int OFW_INIT(ofw_t _ofw, void *_cookie) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_init); return ((ofw_init_t *) _m)(_ofw, _cookie); } /** @brief Unique descriptor for the OFW_PEER() method */ extern struct kobjop_desc ofw_peer_desc; /** @brief A function implementing the OFW_PEER() method */ typedef phandle_t ofw_peer_t(ofw_t _ofw, phandle_t _node); /** * @brief Return next sibling of node. * * @param _node Selected node */ static __inline phandle_t OFW_PEER(ofw_t _ofw, phandle_t _node) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_peer); return ((ofw_peer_t *) _m)(_ofw, _node); } /** @brief Unique descriptor for the OFW_PARENT() method */ extern struct kobjop_desc ofw_parent_desc; /** @brief A function implementing the OFW_PARENT() method */ typedef phandle_t ofw_parent_t(ofw_t _ofw, phandle_t _node); /** * @brief Return parent of node. * * @param _node Selected node */ static __inline phandle_t OFW_PARENT(ofw_t _ofw, phandle_t _node) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_parent); return ((ofw_parent_t *) _m)(_ofw, _node); } /** @brief Unique descriptor for the OFW_CHILD() method */ extern struct kobjop_desc ofw_child_desc; /** @brief A function implementing the OFW_CHILD() method */ typedef phandle_t ofw_child_t(ofw_t _ofw, phandle_t _node); /** * @brief Return first child of node. * * @param _node Selected node */ static __inline phandle_t OFW_CHILD(ofw_t _ofw, phandle_t _node) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_child); return ((ofw_child_t *) _m)(_ofw, _node); } /** @brief Unique descriptor for the OFW_INSTANCE_TO_PACKAGE() method */ extern struct kobjop_desc ofw_instance_to_package_desc; /** @brief A function implementing the OFW_INSTANCE_TO_PACKAGE() method */ typedef phandle_t ofw_instance_to_package_t(ofw_t _ofw, ihandle_t _handle); /** * @brief Return package corresponding to instance. * * @param _handle Selected instance */ static __inline phandle_t OFW_INSTANCE_TO_PACKAGE(ofw_t _ofw, ihandle_t _handle) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_instance_to_package); return ((ofw_instance_to_package_t *) _m)(_ofw, _handle); } /** @brief Unique descriptor for the OFW_GETPROPLEN() method */ extern struct kobjop_desc ofw_getproplen_desc; /** @brief A function implementing the OFW_GETPROPLEN() method */ typedef ssize_t ofw_getproplen_t(ofw_t _ofw, phandle_t _node, const char *_prop); /** * @brief Return length of node property. * * @param _node Selected node * @param _prop Property name */ static __inline ssize_t OFW_GETPROPLEN(ofw_t _ofw, phandle_t _node, const char *_prop) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_getproplen); return ((ofw_getproplen_t *) _m)(_ofw, _node, _prop); } /** @brief Unique descriptor for the OFW_GETPROP() method */ extern struct kobjop_desc ofw_getprop_desc; /** @brief A function implementing the OFW_GETPROP() method */ typedef ssize_t ofw_getprop_t(ofw_t _ofw, phandle_t _node, const char *_prop, void *_buf, size_t _size); /** * @brief Read node property. * * @param _node Selected node * @param _prop Property name * @param _buf Pointer to buffer * @param _size Size of buffer */ static __inline ssize_t OFW_GETPROP(ofw_t _ofw, phandle_t _node, const char *_prop, void *_buf, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_getprop); return ((ofw_getprop_t *) _m)(_ofw, _node, _prop, _buf, _size); } /** @brief Unique descriptor for the OFW_NEXTPROP() method */ extern struct kobjop_desc ofw_nextprop_desc; /** @brief A function implementing the OFW_NEXTPROP() method */ typedef int ofw_nextprop_t(ofw_t _ofw, phandle_t _node, const char *_prop, char *_buf, size_t _size); /** * @brief Get next property name. * * @param _node Selected node * @param _prop Current property name * @param _buf Buffer for next property name * @param _size Size of buffer */ static __inline int OFW_NEXTPROP(ofw_t _ofw, phandle_t _node, const char *_prop, char *_buf, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_nextprop); return ((ofw_nextprop_t *) _m)(_ofw, _node, _prop, _buf, _size); } /** @brief Unique descriptor for the OFW_SETPROP() method */ extern struct kobjop_desc ofw_setprop_desc; /** @brief A function implementing the OFW_SETPROP() method */ typedef int ofw_setprop_t(ofw_t _ofw, phandle_t _node, const char *_prop, const void *_buf, size_t _size); /** * @brief Set property. * * @param _node Selected node * @param _prop Property name * @param _buf Value to set * @param _size Size of buffer */ static __inline int OFW_SETPROP(ofw_t _ofw, phandle_t _node, const char *_prop, const void *_buf, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_setprop); return ((ofw_setprop_t *) _m)(_ofw, _node, _prop, _buf, _size); } /** @brief Unique descriptor for the OFW_CANON() method */ extern struct kobjop_desc ofw_canon_desc; /** @brief A function implementing the OFW_CANON() method */ typedef ssize_t ofw_canon_t(ofw_t _ofw, const char *_path, char *_buf, size_t _size); /** * @brief Canonicalize path. * * @param _path Path to canonicalize * @param _buf Buffer for canonicalized path * @param _size Size of buffer */ static __inline ssize_t OFW_CANON(ofw_t _ofw, const char *_path, char *_buf, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_canon); return ((ofw_canon_t *) _m)(_ofw, _path, _buf, _size); } /** @brief Unique descriptor for the OFW_FINDDEVICE() method */ extern struct kobjop_desc ofw_finddevice_desc; /** @brief A function implementing the OFW_FINDDEVICE() method */ typedef phandle_t ofw_finddevice_t(ofw_t _ofw, const char *_path); /** * @brief Return phandle for named device. * * @param _path Device path */ static __inline phandle_t OFW_FINDDEVICE(ofw_t _ofw, const char *_path) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_finddevice); return ((ofw_finddevice_t *) _m)(_ofw, _path); } /** @brief Unique descriptor for the OFW_INSTANCE_TO_PATH() method */ extern struct kobjop_desc ofw_instance_to_path_desc; /** @brief A function implementing the OFW_INSTANCE_TO_PATH() method */ typedef ssize_t ofw_instance_to_path_t(ofw_t _ofw, ihandle_t _handle, char *_path, size_t _size); /** * @brief Return path for node instance. * * @param _handle Instance handle * @param _path Buffer for path * @param _size Size of buffer */ static __inline ssize_t OFW_INSTANCE_TO_PATH(ofw_t _ofw, ihandle_t _handle, char *_path, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_instance_to_path); return ((ofw_instance_to_path_t *) _m)(_ofw, _handle, _path, _size); } /** @brief Unique descriptor for the OFW_PACKAGE_TO_PATH() method */ extern struct kobjop_desc ofw_package_to_path_desc; /** @brief A function implementing the OFW_PACKAGE_TO_PATH() method */ typedef ssize_t ofw_package_to_path_t(ofw_t _ofw, phandle_t _node, char *_path, size_t _size); /** * @brief Return path for node. * * @param _node Package node * @param _path Buffer for path * @param _size Size of buffer */ static __inline ssize_t OFW_PACKAGE_TO_PATH(ofw_t _ofw, phandle_t _node, char *_path, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_package_to_path); return ((ofw_package_to_path_t *) _m)(_ofw, _node, _path, _size); } /** @brief Unique descriptor for the OFW_TEST() method */ extern struct kobjop_desc ofw_test_desc; /** @brief A function implementing the OFW_TEST() method */ typedef int ofw_test_t(ofw_t _ofw, const char *_name); /** * @brief Test to see if a service exists. * * @param _name name of the service */ static __inline int OFW_TEST(ofw_t _ofw, const char *_name) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_test); return ((ofw_test_t *) _m)(_ofw, _name); } /** @brief Unique descriptor for the OFW_CALL_METHOD() method */ extern struct kobjop_desc ofw_call_method_desc; /** @brief A function implementing the OFW_CALL_METHOD() method */ typedef int ofw_call_method_t(ofw_t _ofw, ihandle_t _instance, const char *_method, int _nargs, int _nreturns, cell_t *_args_and_returns); /** * @brief Call method belonging to an instance handle. * * @param _instance Instance handle * @param _method Method name * @param _nargs Number of arguments * @param _nreturns Number of return values * @param _args_and_returns Values for arguments, followed by returns */ static __inline int OFW_CALL_METHOD(ofw_t _ofw, ihandle_t _instance, const char *_method, int _nargs, int _nreturns, cell_t *_args_and_returns) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_call_method); return ((ofw_call_method_t *) _m)(_ofw, _instance, _method, _nargs, _nreturns, _args_and_returns); } /** @brief Unique descriptor for the OFW_INTERPRET() method */ extern struct kobjop_desc ofw_interpret_desc; /** @brief A function implementing the OFW_INTERPRET() method */ typedef int ofw_interpret_t(ofw_t _ofw, const char *_cmd, int _nreturns, cell_t *_returns); /** * @brief Interpret a forth command. * * @param _cmd Command * @param _nreturns Number of return values * @param _returns Values for returns */ static __inline int OFW_INTERPRET(ofw_t _ofw, const char *_cmd, int _nreturns, cell_t *_returns) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_interpret); return ((ofw_interpret_t *) _m)(_ofw, _cmd, _nreturns, _returns); } /** @brief Unique descriptor for the OFW_OPEN() method */ extern struct kobjop_desc ofw_open_desc; /** @brief A function implementing the OFW_OPEN() method */ typedef ihandle_t ofw_open_t(ofw_t _ofw, const char *_path); /** * @brief Open node, returning instance handle. * * @param _path Path to node */ static __inline ihandle_t OFW_OPEN(ofw_t _ofw, const char *_path) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_open); return ((ofw_open_t *) _m)(_ofw, _path); } /** @brief Unique descriptor for the OFW_CLOSE() method */ extern struct kobjop_desc ofw_close_desc; /** @brief A function implementing the OFW_CLOSE() method */ typedef void ofw_close_t(ofw_t _ofw, ihandle_t _instance); /** * @brief Close node instance. * * @param _instance Instance to close */ static __inline void OFW_CLOSE(ofw_t _ofw, ihandle_t _instance) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_close); ((ofw_close_t *) _m)(_ofw, _instance); } /** @brief Unique descriptor for the OFW_READ() method */ extern struct kobjop_desc ofw_read_desc; /** @brief A function implementing the OFW_READ() method */ typedef ssize_t ofw_read_t(ofw_t _ofw, ihandle_t _instance, void *_buf, size_t size); /** * @brief Read from device. * * @param _instance Device instance * @param _buf Buffer to read to * @param _size Size of buffer */ static __inline ssize_t OFW_READ(ofw_t _ofw, ihandle_t _instance, void *_buf, size_t size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_read); return ((ofw_read_t *) _m)(_ofw, _instance, _buf, size); } /** @brief Unique descriptor for the OFW_WRITE() method */ extern struct kobjop_desc ofw_write_desc; /** @brief A function implementing the OFW_WRITE() method */ typedef ssize_t ofw_write_t(ofw_t _ofw, ihandle_t _instance, const void *_buf, size_t size); /** * @brief Write to device. * * @param _instance Device instance * @param _buf Buffer to write from * @param _size Size of buffer */ static __inline ssize_t OFW_WRITE(ofw_t _ofw, ihandle_t _instance, const void *_buf, size_t size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_write); return ((ofw_write_t *) _m)(_ofw, _instance, _buf, size); } /** @brief Unique descriptor for the OFW_SEEK() method */ extern struct kobjop_desc ofw_seek_desc; /** @brief A function implementing the OFW_SEEK() method */ typedef int ofw_seek_t(ofw_t _ofw, ihandle_t _instance, uint64_t _off); /** * @brief Seek device. * * @param _instance Device instance * @param _off Offset to which to seek */ static __inline int OFW_SEEK(ofw_t _ofw, ihandle_t _instance, uint64_t _off) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_seek); return ((ofw_seek_t *) _m)(_ofw, _instance, _off); } /** @brief Unique descriptor for the OFW_CLAIM() method */ extern struct kobjop_desc ofw_claim_desc; /** @brief A function implementing the OFW_CLAIM() method */ typedef caddr_t ofw_claim_t(ofw_t _ofw, void *_addr, size_t _size, u_int _align); /** * @brief Claim virtual memory. * * @param _addr Requested memory location (NULL for first available) * @param _size Requested size in bytes * @param _align Requested alignment */ static __inline caddr_t OFW_CLAIM(ofw_t _ofw, void *_addr, size_t _size, u_int _align) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_claim); return ((ofw_claim_t *) _m)(_ofw, _addr, _size, _align); } /** @brief Unique descriptor for the OFW_RELEASE() method */ extern struct kobjop_desc ofw_release_desc; /** @brief A function implementing the OFW_RELEASE() method */ typedef void ofw_release_t(ofw_t _ofw, void *_addr, size_t _size); /** * @brief Release virtual memory. * * @param _addr Memory location * @param _size Size in bytes */ static __inline void OFW_RELEASE(ofw_t _ofw, void *_addr, size_t _size) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_release); ((ofw_release_t *) _m)(_ofw, _addr, _size); } /** @brief Unique descriptor for the OFW_ENTER() method */ extern struct kobjop_desc ofw_enter_desc; /** @brief A function implementing the OFW_ENTER() method */ typedef void ofw_enter_t(ofw_t _ofw); /** * @brief Temporarily return control to firmware. */ static __inline void OFW_ENTER(ofw_t _ofw) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_enter); ((ofw_enter_t *) _m)(_ofw); } /** @brief Unique descriptor for the OFW_EXIT() method */ extern struct kobjop_desc ofw_exit_desc; /** @brief A function implementing the OFW_EXIT() method */ typedef void ofw_exit_t(ofw_t _ofw); /** * @brief Halt and return control to firmware. */ static __inline void OFW_EXIT(ofw_t _ofw) { kobjop_t _m; KOBJOPLOOKUP(((kobj_t)_ofw)->ops,ofw_exit); ((ofw_exit_t *) _m)(_ofw); } #endif /* _ofw_if_h_ */