Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ata_slave_link_init(9) [suse man page]

ATA_SLAVE_LINK_INIT(9)						  libata Library					    ATA_SLAVE_LINK_INIT(9)

NAME
ata_slave_link_init - initialize slave link SYNOPSIS
int ata_slave_link_init(struct ata_port * ap); ARGUMENTS
ap port to initialize slave link for DESCRIPTION
Create and initialize slave link for ap. This enables slave link handling on the port. In libata, a port contains links and a link contains devices. There is single host link but if a PMP is attached to it, there can be multiple fan-out links. On SATA, there's usually a single device connected to a link but PATA and SATA controllers emulating TF based interface can have two - master and slave. However, there are a few controllers which don't fit into this abstraction too well - SATA controllers which emulate TF interface with both master and slave devices but also have separate SCR register sets for each device. These controllers need separate links for physical link handling (e.g. onlineness, link speed) but should be treated like a traditional M/S controller for everything else (e.g. command issue, softreset). slave_link is libata's way of handling this class of controllers without impacting core layer too much. For anything other than physical link handling, the default host link is used for both master and slave. For physical link handling, separate ap->slave_link is used. All dirty details are implemented inside libata core layer. From LLD's POV, the only difference is that prereset, hardreset and postreset are called once more for the slave link, so the reset sequence looks like the following. prereset(M) -> prereset(S) -> hardreset(M) -> hardreset(S) -> softreset(M) -> postreset(M) -> postreset(S) Note that softreset is called only for the master. Softreset resets both M/S by definition, so SRST on master should handle both (the standard method will work just fine). LOCKING
Should be called before host is registered. RETURNS
0 on success, -errno on failure. AUTHOR
Jeff Garzik Author. COPYRIGHT
Kernel Hackers Manual 2.6. July 2010 ATA_SLAVE_LINK_INIT(9)

Check Out this Related Man Page

Tk_MaintainGeometry(3)					       Tk Library Procedures					    Tk_MaintainGeometry(3)

__________________________________________________________________________________________________________________________________________________

NAME
Tk_MaintainGeometry, Tk_UnmaintainGeometry - maintain geometry of one window relative to another SYNOPSIS
#include <tk.h> Tk_MaintainGeometry(slave, master, x, y, width, height) Tk_UnmaintainGeometry(slave, master) ARGUMENTS
Tk_Window slave (in) Window whose geometry is to be controlled. Tk_Window master (in) Window relative to which slave's geometry will be controlled. int x (in) Desired x-coordinate of slave in master, measured in pixels from the inside of master's left border to the outside of slave's left border. int y (in) Desired y-coordinate of slave in master, measured in pixels from the inside of master's top border to the outside of slave's top border. int width (in) Desired width for slave, in pixels. int height (in) Desired height for slave, in pixels. _________________________________________________________________ DESCRIPTION
Tk_MaintainGeometry and Tk_UnmaintainGeometry make it easier for geometry managers to deal with slaves whose masters are not their parents. Three problems arise if the master for a slave is not its parent: [1] The x- and y-position of the slave must be translated from the coordinate system of the master to that of the parent before posi- tioning the slave. [2] If the master window, or any of its ancestors up to the slave's parent, is moved, then the slave must be repositioned within its parent in order to maintain the correct position relative to the master. [3] If the master or one of its ancestors is mapped or unmapped, then the slave must be mapped or unmapped to correspond. None of these problems is an issue if the parent and master are the same. For example, if the master or one of its ancestors is unmapped, the slave is automatically removed by the screen by X. Tk_MaintainGeometry deals with these problems for slaves whose masters are not their parents, as well as handling the simpler case of slaves whose masters are their parents. Tk_MaintainGeometry is typically called by a window manager once it has decided where a slave should be positioned relative to its master. Tk_MaintainGeometry translates the coordinates to the coordinate system of slave's parent and then moves and resizes the slave appropriately. Furthermore, it remembers the desired position and creates event handlers to monitor the master and all of its ancestors up to (but not including) the slave's parent. If any of these windows is moved, mapped, or unmapped, the slave will be adjusted so that it is mapped only when the master is mapped and its geometry relative to the master remains as specified by x, y, width, and height. When a window manager relinquishes control over a window, or if it decides that it does not want the window to appear on the screen under any conditions, it calls Tk_UnmaintainGeometry. Tk_UnmaintainGeometry unmaps the window and cancels any previous calls to Tk_MaintainGeom- etry for the master-slave pair, so that the slave's geometry and mapped state are no longer maintained automatically. Tk_UnmaintainGeome- try need not be called by a geometry manager if the slave, the master, or any of the master's ancestors is destroyed: Tk will call it automatically. If Tk_MaintainGeometry is called repeatedly for the same master-slave pair, the information from the most recent call supersedes any older information. If Tk_UnmaintainGeometry is called for a master-slave pair that is is not currently managed, the call has no effect. KEYWORDS
geometry manager, map, master, parent, position, slave, unmap Tk 4.0 Tk_MaintainGeometry(3)
Man Page