亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dm_api.tex

?? disksim是一個非常優(yōu)秀的磁盤仿真工具
?? TEX
字號:
\subsection{API}This section describes the data structures and functions that comprisethe Diskmodel API.The \texttt{dm\_disk\_if} struct is the ``top-level'' handle for adisk in diskmodel.  It contains a few disk-wide parameters -- numberof heads/surfaces, cylinders and number of logical blocks exported bydevice -- along with pointers to the mechanics and layout interfaces.\subsubsection{Disk-wide Parameters}The top-level of a disk model is the \texttt{dm\_disk\_if} struct:\begin{verbatim}struct dm_disk_if {  int dm_cyls;            // number of cylinders  int dm_surfaces;        // number of media surfaces used for data  int dm_sectors;         // LBNs or total physical sectors (??)  struct dm_layout_if   *layout;  struct dm_mech_if     *mech;};\end{verbatim}All fields of diskmodel API structures are read-only; the behavior ofdiskmodel after any of them is modified is undefined.  \texttt{layout}and \texttt{mech} are pointers to the layout and mechanical moduleinterfaces, respectively.  Each is a structure containing a number ofpointers to functions which constitute the actual implementation.  Inthe following presentation, we write the functions as declarationsrather than as types of function pointers for readability.  Many of themethods take one or more result parameters; i.e. pointers whoseaddresses will be filled in with some result.  Unless otherwisespecified, passing \texttt{NULL} for result parameters is allowed andthe result will not be filled in.\subsubsection{Layout}The layout interface uses the following auxiliary type:\texttt{dm\_ptol\_result\_t} appears in situations where a client codeprovides a pbn which may not exist on disk as-described e.g. due todefects.  It contains the following values:\begin{verbatim}  DM_SLIPPED  DM_REMAPPED  DM_OK  DM_NX\end{verbatim}\texttt{DM\_SLIPPED} indicates that the pbn is a slipped defect.\texttt{DM\_REMAPPED} indicates that the pbn is a remapped defect.\texttt{DM\_OK} indicates that the pbn exists on disk as-is.  \texttt{DM\_NX}indicates that there is no sector on the device corresponding to thegiven pbn.  When interpreted as integers, these values are all lessthan zero so they can be unambiguously intermixed with nonnegativeintegers e.g. lbns.The layout module exports the following methods:\begin{verbatim}dm_ptol_result_t dm_translate_ltop(struct dm_disk_if *,                                    int lbn,                                    dm_layout_maptype,                                   struct dm_pbn *result,                                   int *remapsector);\end{verbatim}Translate a logical block number (lbn) to a physical block number(pbn).  \texttt{remapsector} is a result parameter which will be setto a non-zero value if the lbn was remapped.The sector number in the result is relative to the $0_l$ zero sector.\begin{verbatim}dm_ptol_result_t dm_translate_ltop_0t(struct dm_disk_if *,                                      int lbn,                                      dm_layout_maptype,                                     struct dm_pbn *result,                                     int *remapsector);\end{verbatim}Same as \texttt{dm\_translate\_ltop} except that the sector in result is relative to the $0_t$ sector.\begin{verbatim}dm_ptol_result_t dm_translate_ptol(struct dm_disk_if *,                                    struct dm_pbn *p,                                   int *remapsector);\end{verbatim}Translate a pbn to an lbn.  \texttt{remapsector} is a result parameterwhich will be set to a non-zero value if the pbn is defective andremapped.The sector number in the operand is relative to the $0_l$ zero sector.\begin{verbatim}dm_ptol_result_t dm_translate_ptol_0t(struct dm_disk_if *,                                       struct dm_pbn *p,                                      int *remapsector);\end{verbatim}Same as \texttt{dm\_translate\_ptol} except that the sector in the resultis relative to the $0_t$ sector.\begin{verbatim}int dm_get_sectors_lbn(struct dm_disk_if *d,                       int lbn);\end{verbatim}Returns the number of sectors on the track containing the given lbn.\begin{verbatim}int dm_get_sectors_pbn(struct dm_disk_if *d,                       struct dm_pbn *);\end{verbatim}Returns the number of physical sectors on the track containing thegiven pbn.  This may not be the same as the number of lbns mapped onthis track.  If the cylinder is unmapped, the return value will be thenumber of sectors per track for the nearest (lower) zone.\begin{verbatim}void dm_get_track_boundaries(struct dm_disk_if *d,                             struct dm_pbn *,                             int *first_lbn,                             int *last_lbn,                             int *remapsector);\end{verbatim}Computes lbn boundaries for the track containing the given pbn.\texttt{first\_lbn} is a result parameter which returns the first lbnon the track containing the given pbn; similarly, \texttt{last\_lbn}returns the last lbn on the given track.  \texttt{remapsector} returnsa non-zero value if the first or last block on the track are remapped.Note that \texttt{last\_lbn} - \texttt{first\_lbn} + 1 may be greaterthan the number of LBNs mapped on the track e.g. due to remapped defects.\begin{verbatim}dm_ptol_result_t dm_seek_distance(struct dm_disk_if *,                                  int start_lbn,                                  int dest_lbn);\end{verbatim}Computes the seek distance in cylinders that would be incurred forgiven request.  Returns a \texttt{dm\_ptol\_result\_t} since one or both of theLBNs may be slipped or remapped.\begin{verbatim}dm_angle_t dm_pbn_skew(struct dm_disk_if *,                       struct dm_pbn *);\end{verbatim}This computes the starting offset of a pbn relative to 0.  The operandis a pbn relative to $0_l$; the result is an angle relative to $0$.This accounts for all skews, slips, etc.\begin{verbatim}dm_angle_t dm_get_track_zerol(struct dm_disk_if *,                               struct dm_mech_state *);\end{verbatim}The return value is $0_l$ for the track identified by the secondargument.  This is equivalent to calling \texttt{dm\_pbn\_skew}for sector 0 on the same track.\begin{verbatim}dm_ptol_result_t dm_convert_atop(struct dm_disk_if *,                                 struct dm_mech_state *,                                 struct dm_pbn *);\end{verbatim}Finds the pbn of the sector whose leading edge is less than or equalto the given angle.  Returns a \texttt{ptol\_result\_t} since theprovided angle could be in slipped space, etc.  Both the angle in thesecond operand and the sector number in the result pbn are relative to$0_l$.\begin{verbatim}dm_angle_t dm_get_sector_width(struct dm_disk_if *,                               struct dm_pbn *track,                               int num);\end{verbatim}Returns the angular width of an extent of num sectors on the given track.Returns 0 if \texttt{num} is greater than the number of sectors on thetrack.\begin{verbatim}dm_angle_t dm_lbn_offset(struct dm_disk_if *, int lbn1, int lbn2);\end{verbatim}Computes the angular distance/offset between two logical blocks.\begin{verbatim}int dm_marshalled_len(struct dm_disk_if *);\end{verbatim}Returns the size of the structure in bytes when marshalled.\begin{verbatim}void *dm_marshall(struct dm_disk_if *, char *);\end{verbatim}Marshall this layout struct into the provided buffer.  The return value isthe first address in the buffer not written.\subsubsection{Mechanics}The following diagram shows the breakdown of a zero-latency access inour model, and the corresponding definitions of seek time, positioningtime and access time.\begin{verbatim}+-------------------------+------------+----------+---------+----------+| seek                    | initial    |          | add.    |          || headswitch              | rotational | xfertime | rot.    | xfertime ||            extra settle | latency    |          | latency |          |+-------------------------+------------+----------+---------+----------+|---------seektime--------||-----------positioning-time-----------||------------------------------access-time-----------------------------|\end{verbatim}\begin{verbatim}dm_time_t dm_seek_time(struct dm_disk_if *,                        struct dm_mech_state *start_track,                       struct dm_mech_state *end_track,                       int read);\end{verbatim}Computes the amount of time to seek from the first track to the secondtrack, possibly including a head switch and additional write settlingtime.  This is only track-to-track so the angles in the parameters areignored.  \texttt{read} should be nonzero if the access on the destinationtrack is a read and zero if it is a write; extra write-settle time isincluded in the result for writes.\begin{verbatim}int dm_access_block(struct dm_disk_if *,                    struct dm_mech_state *initial,                    int start,                    int len,                    int immed);\end{verbatim}From the given inital condition and access, it will return the firstblock on the track to be read.  The access is for \texttt{len} sectorsstarting at physical sector \texttt{start} on the same track as\texttt{initial}.  \texttt{immed} indicates if this is an``immediate'' or ``zero-latency'' access; if \texttt{immed} is zero,the result will always be the same as \texttt{start}.\begin{verbatim}dm_time_t dm_latency(struct dm_disk_if *,                      struct dm_mech_state *initial,                     int start,                                         int len,                                           int immed,                                         dm_time_t *addtolatency); \end{verbatim}This computes the rotational latency incurred from accessing up to\texttt{len} blocks from the track starting from angle\texttt{initial} and sector \texttt{start}.  This will access to theend of the track but not wrap around; e.g. for a sequential access thatstarts on the given track and switches to another, after reaching theend of the first.  The return value is the initial rotational latency;i.e. how long before the media transfer for the first block to be readstarts.  \texttt{addtolatency} is a result parameter returningadditional rotational latency as defined in the figure above.  Notethat for non-zero-latency accesses, addtolatency will always be zero.Also note that for zero latency accesses, the latency is the amount oftime before the media transfer begins for the first sector i.e. thesame sector that would be returned by \texttt{dm\_access\_block()}.\texttt{dm\_pos\_time} and \texttt{dm\_acctime} optionally returnbroken-down components of the result via the following struct:\begin{verbatim}struct dm_mech_acctimes {   dm_time_t seektime;   dm_time_t initial_latency;   dm_time_t initial_xfer;   dm_time_t addl_latency;   dm_time_t addl_xfer;};\end{verbatim}For a zero-latency access, the last two fields will always be zero.\texttt{dm\_pos\_time} only fills in the first two fields;\texttt{dm\_acctime} fills in all 5.\begin{verbatim}dm_time_t dm_pos_time(struct dm_disk_if *,                      struct dm_mech_state *initial,                      struct dm_pbn *start,                      int len,                      int rw,                      int immed);\end{verbatim}Compute the amount of time before the media transfer for \texttt{len}sectors starting at \texttt{start} begins starting with the diskmechanics in state \texttt{initial}.  0 for \texttt{rw} indicates awrite, any other value indicates a read.  A non-zero value for\texttt{immed} indicates a ``zero-latency'' access.  Positioning timeis the same as seek time (including head-switch time and any extrawrite-settle time) plus initial rotational latency.\texttt{len} must be at least 1.\begin{verbatim}dm_time_t dm_acctime(struct dm_disk_if *,                      struct dm_mech_state *initial_state,                     struct dm_pbn *start,                     int len,                     int rw,                     int immed,                     struct dm_mech_state *result_state);\end{verbatim}Estimate how long it will take to access \texttt{len} sectors startingwith pbn \texttt{start} with the disk initially in state\texttt{initial}. 0 for \texttt{rw} indicates a write; any other valueindicates a read.  A non-zero value for \texttt{immed} indicates a``zero-latency'' access.  \texttt{result\_state} is a result parameterwhich returns the mechanical state of the disk when the accesscompletes.\texttt{len} must be at least 1.Access time consists of positioning time (above), transfer time andany additional rotational latency not included in the positioningtime, e.g. in the middle of a zero-latency access transfer. \texttt{dm\_acctime} ignores defects so it yields a smaller-than-correct result when computing access times on tracks with defective sectors.This is deliberate as the handling of defects is a high-levelcontroller function which varies widely.\begin{verbatim}dm_time_t dm_rottime(struct dm_disk_if *,                     dm_angle_t begin,                     dm_angle_t end);\end{verbatim}Compute how long it will take the disk to rotate from the angle in thefirst position to that in the second position.  \begin{verbatim}dm_time_t dm_xfertime(struct dm_disk_if *d,                      struct dm_mech_state *,                      int len);\end{verbatim}Computes the amount of time to transfer len sectors to or from thetrack designated by the second argument.  This is computed in terms of\texttt{dm\_get\_sector\_width()} and \texttt{dm\_rottime()} in theobvious way.\begin{verbatim}dm_time_t dm_headswitch_time(struct dm_disk_if *,                              int h1,                              int h2);\end{verbatim}Returns the amount of time to swith from using the first head to thesecond. \begin{verbatim}dm_angle_t dm_rotate(struct dm_disk_if *,                      dm_time_t *time);\end{verbatim}Returns the angle of the media after \texttt{time} has elapsedassuming the media started at angle 0.\begin{verbatim}dm_time_t dm_period(struct dm_disk_if *);\end{verbatim}Returns the rotational period of the media.\begin{verbatim}int dm_marshalled_len(struct dm_disk_if *);\end{verbatim}Returns the marshalled size of the structure.\begin{verbatim}void *dm_marshall(struct dm_disk_if *, char *);\end{verbatim}Marshalls the structure into the given buffer.  The return value isthe first address in the buffer not written.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本中文字幕一区| 国内外成人在线视频| 亚洲精品乱码久久久久| 亚洲国产成人私人影院tom| 欧美一区二视频| 欧美亚洲国产一卡| 欧美一区二区三区在线| 日韩一区二区中文字幕| 欧美成人一区二区三区片免费| 欧美无乱码久久久免费午夜一区| 欧美午夜寂寞影院| 欧美日韩和欧美的一区二区| 欧美日韩国产另类不卡| 日韩欧美123| 中文字幕日本不卡| 日韩精品一级二级 | 国产精品亚洲一区二区三区在线| 蜜臀av一级做a爰片久久| 国产一区日韩二区欧美三区| 成人福利视频网站| 欧美私人免费视频| 国产日韩成人精品| 一区二区三区精品在线| 久久精品噜噜噜成人av农村| 国产一区二区h| 欧美人动与zoxxxx乱| 国产精品久久久久桃色tv| 日韩—二三区免费观看av| 精品一区二区免费视频| 成人18视频日本| 国产色婷婷亚洲99精品小说| 亚洲国产精品人人做人人爽| 成人黄页在线观看| 久久精品亚洲乱码伦伦中文| 日韩专区一卡二卡| 91国内精品野花午夜精品| 国产日韩欧美一区二区三区综合| 亚洲一区二区三区四区的| 成人污视频在线观看| 精品国产乱码久久久久久久| 亚洲一区二区三区三| 色丁香久综合在线久综合在线观看| 日韩女优av电影| 美日韩一级片在线观看| 欧美精品1区2区| 日韩av一区二| 欧美电视剧免费全集观看| 蜜桃一区二区三区在线观看| 欧美一区二区大片| 久久精品国产亚洲高清剧情介绍 | 亚洲小说欧美激情另类| 91在线视频播放地址| 亚洲天堂中文字幕| 色国产精品一区在线观看| 性欧美大战久久久久久久久| 欧美日韩精品一二三区| 日韩高清在线观看| 久久精品一区八戒影视| 欧亚一区二区三区| 久久成人久久爱| 亚洲精品亚洲人成人网| 欧美一区午夜视频在线观看| 国产乱子伦一区二区三区国色天香| 久久久久久久综合狠狠综合| av激情亚洲男人天堂| 美女视频免费一区| 亚洲美女免费视频| 国产亚洲综合在线| 欧美日韩dvd在线观看| 国产精品99久| 视频一区二区国产| 亚洲少妇屁股交4| 久久毛片高清国产| 91精品国产综合久久久蜜臀图片| 国产在线不卡一区| 日本视频免费一区| 亚洲精品乱码久久久久久日本蜜臀| 日韩久久免费av| 欧美精品亚洲二区| 欧美日韩精品欧美日韩精品一综合| 国产成人免费视频网站| 久久99精品国产麻豆不卡| 婷婷亚洲久悠悠色悠在线播放| 亚洲精品在线免费观看视频| 欧美午夜精品久久久久久孕妇 | 日韩精品一区二区三区在线播放 | 国产精品久久久久7777按摩| 日韩一级二级三级| 91精品国产综合久久国产大片| 在线精品视频一区二区三四| a美女胸又www黄视频久久| 欧美久久久久久久久久| 欧美丰满嫩嫩电影| 欧美一激情一区二区三区| 欧美一区二区三区在线电影| 欧美成人vr18sexvr| 精品三级av在线| 国产精品久久久爽爽爽麻豆色哟哟| 久久精品一级爱片| 一区二区三区美女视频| 五月婷婷久久综合| 韩国一区二区视频| 菠萝蜜视频在线观看一区| 99久久99久久精品免费看蜜桃| 欧美性xxxxx极品少妇| 精品久久久久久久久久久久久久久| 精品嫩草影院久久| 亚洲欧美中日韩| 一卡二卡三卡日韩欧美| 国产在线一区二区| 欧美在线视频全部完| 久久九九久久九九| 亚洲一区二区三区国产| 国产在线观看一区二区| 欧美久久久久久蜜桃| 国产精品三级久久久久三级| 亚洲国产一区视频| 盗摄精品av一区二区三区| 91麻豆精品国产91久久久使用方法| 久久综合久久综合久久| 日韩综合小视频| 色久综合一二码| 国产精品少妇自拍| 国产精华液一区二区三区| 欧美日韩黄色一区二区| 一区二区激情小说| www.欧美日韩| 亚洲欧洲中文日韩久久av乱码| 久久99国内精品| 精品噜噜噜噜久久久久久久久试看| 一区二区三区精品视频在线| 91在线精品秘密一区二区| 欧美激情在线看| 99国产精品视频免费观看| 中文字幕国产精品一区二区| 国产福利一区二区三区视频在线| 日韩一级大片在线观看| 精久久久久久久久久久| 欧美精品一区二| 处破女av一区二区| 亚洲柠檬福利资源导航| 91搞黄在线观看| 亚洲国产sm捆绑调教视频| 欧美男生操女生| 久久成人免费网| 国产精品美女一区二区在线观看| 成人精品免费看| 亚洲免费在线观看视频| 欧美亚洲另类激情小说| 免播放器亚洲一区| 国产日产欧美一区二区视频| 成人av午夜影院| 亚洲精品视频在线观看免费| 91精品国产综合久久久蜜臀图片| 久久99精品国产.久久久久| 亚洲欧洲国产日韩| 欧美成人欧美edvon| 一本一道波多野结衣一区二区| 日韩中文字幕91| 中文字幕在线不卡视频| 日韩午夜电影在线观看| 欧美亚洲高清一区| 国产99久久久国产精品免费看| 又紧又大又爽精品一区二区| 久久综合久久鬼色中文字| 91黄色免费看| zzijzzij亚洲日本少妇熟睡| 日韩精品乱码免费| 婷婷开心激情综合| 亚洲色大成网站www久久九九| 精品蜜桃在线看| 久久综合久久综合九色| 欧美一区二区福利在线| 欧美精品久久久久久久多人混战| 91视频www| 色婷婷av一区二区三区软件| 成人激情午夜影院| 成人精品视频网站| 国产成人亚洲综合a∨婷婷 | 欧美亚洲一区二区三区四区| 大陆成人av片| 色香蕉久久蜜桃| 欧美手机在线视频| 在线电影欧美成精品| 日韩一区二区三区视频在线观看| 欧美一区二区三区影视| 精品久久久久久久一区二区蜜臀| 日韩欧美一级在线播放| 久久精品夜色噜噜亚洲a∨| 日本一区二区电影| 亚洲午夜久久久久久久久电影院| 亚洲a一区二区| 狠狠色狠狠色综合| 91久久免费观看| 精品久久一二三区| 亚洲国产精华液网站w| 亚洲国产日韩a在线播放| 欧美aa在线视频| 99在线精品视频| 欧美二区三区91|