• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..16-Dec-2021-

man1/H10-Nov-2020-379370

man3/H10-Nov-2020-12,43012,058

man7/H10-Nov-2020-4,2074,113

READMEH A D10-Nov-20206.6 KiB169128

fabric.7.mdH A D10-Nov-202012.5 KiB312246

fi_atomic.3.mdH A D10-Nov-202021.9 KiB671522

fi_av.3.mdH A D10-Nov-202019.5 KiB470373

fi_av_set.3.mdH A D10-Nov-20206.8 KiB222157

fi_bgq.7.mdH A D10-Nov-20204.9 KiB12796

fi_cm.3.mdH A D10-Nov-202010.8 KiB278207

fi_cntr.3.mdH A D10-Nov-20209.2 KiB286207

fi_collective.3.mdH A D10-Nov-202019.1 KiB560439

fi_control.3.mdH A D10-Nov-2020966 4833

fi_cq.3.mdH A D10-Nov-202033.4 KiB820655

fi_direct.7.mdH A D10-Nov-20202.7 KiB7759

fi_domain.3.mdH A D10-Nov-202030 KiB712562

fi_efa.7.mdH A D10-Nov-20206.3 KiB175128

fi_endpoint.3.mdH A D10-Nov-202065.9 KiB1,5551,236

fi_eq.3.mdH A D10-Nov-202020.3 KiB530420

fi_errno.3.mdH A D10-Nov-20202.1 KiB160105

fi_fabric.3.mdH A D10-Nov-20206 KiB236163

fi_getinfo.3.mdH A D10-Nov-202032.4 KiB746617

fi_gni.7.mdH A D10-Nov-202015.8 KiB399303

fi_hook.7.mdH A D10-Nov-20202.5 KiB7252

fi_info.1.mdH A D10-Nov-20203.3 KiB12187

fi_mlx.7.mdH A D10-Nov-2020331 2114

fi_mr.3.mdH A D10-Nov-202028.4 KiB705549

fi_mrail.7.mdH A D10-Nov-20202.9 KiB10367

fi_msg.3.mdH A D10-Nov-202018.7 KiB463364

fi_netdir.7.mdH A D10-Nov-20203.6 KiB11785

fi_nic.3.mdH A D10-Nov-20204.1 KiB159119

fi_pingpong.1.mdH A D10-Nov-20205 KiB179123

fi_poll.3.mdH A D10-Nov-202013.2 KiB388293

fi_provider.7.mdH A D10-Nov-20208.9 KiB232188

fi_psm.7.mdH A D10-Nov-20207 KiB168131

fi_psm2.7.mdH A D10-Nov-202011.8 KiB264208

fi_rma.3.mdH A D10-Nov-202010.2 KiB302227

fi_rstream.7.mdH A D10-Nov-20202.6 KiB8560

fi_rxd.7.mdH A D10-Nov-20201.7 KiB7046

fi_rxm.7.mdH A D10-Nov-20207.1 KiB209142

fi_shm.7.mdH A D10-Nov-20205.2 KiB130101

fi_sockets.7.mdH A D10-Nov-20204.4 KiB11580

fi_strerror.1.mdH A D10-Nov-2020664 3222

fi_tagged.3.mdH A D10-Nov-202015.8 KiB418322

fi_tcp.7.mdH A D10-Nov-20201.8 KiB6847

fi_trigger.3.mdH A D10-Nov-20207.3 KiB192156

fi_udp.7.mdH A D10-Nov-20201.7 KiB6343

fi_usnic.7.mdH A D10-Nov-202011.5 KiB331262

fi_verbs.7.mdH A D10-Nov-20208.2 KiB258185

fi_version.3.mdH A D10-Nov-2020818 4428

README

1This file describes how the developer side of man pages work in
2libfabric.
3
4The Definitive Source Of Truth man pages are the Markdown man pages in
5this directory (i.e., the files ending in .<digit>.md.  If you want to
6edit man pages, you need to edit the .<digit>.md pages.  Do NOT edit
7the .<digit> nroff man pages directly; these files are automatically
8generated -- you will lose any manual edits the next time those files
9are generated.
10
11The Markdown web pages are rendered in two different ways:
12
131. Nroff man pages.  These man pages are put into the `master` branch
14   and later included in libfabric distribution tarballs.
15
162. HTML.  The http://ofiwg.github.io/libfabric/ web site (which is
17   served by the Github web servers) automatically renders the content
18   of the `gh-pages` branch of the libfabric repo.
19
20Markdown syntax
21===============
22
23The definitive man pages are the Markdown man pages.  To edit them,
24you need to understand the syntax used in these files.
25
26The canonical reference for Markdown is here:
27
28    http://daringfireball.net/projects/markdown/syntax
29
30Note, however, that the libfabric Markdown man pages are served via
31the Github Pages web servers, which use a system called Jekyll to
32render the Markdown into HTML (https://github.com/jekyll/jekyll).
33As such, there are a few Jekyll annotations in the libfabric Markdown
34pages (so that they can be served up properly from Github's web
35servers).
36
37If you're familiar with Markdown, you should be ok.  But there are a
38small number differences and quirks with which you should be familiar:
39
401. The first few lines of each file are a YAML header and include
41   directive for Jekyll.  DO NOT REMOVE THIS HEADER (or the file will
42   not render to HTML properly when served up from Github's web
43   servers).  Here's a sample YAML header from fabric.7.md:
44
45---
46layout: page
47title: fabric(7)
48tagline: Libfabric Programmer's Manual
49---
50{% include JB/setup %}
51
52   The whole block is needed, and it must be the first input in the
53   file.
54
552. The libfabric man pages are full of 2-level lists of things.  E.g.,
56   lists of functions, and then in some of the functions, there is a
57   sub-list of flags that can be used with that function.
58
59   The convention used in the libfabric man pages is to highlight a
60   word/phrase representing each list item.  Then use a ":" to start
61   the next line that describes that item.  For example:
62
63*FI_FLOAT_COMPLEX*
64: An ordered pair of single-precision floating point values (IEEE
65  754), with the first value representing the real portion of a
66  complex number and the second representing the imaginary portion.
67
68   This will make the token "FI_FLOAT_COMPLEX" be highlighted in both
69   HTML and nroff output, and then the paragraph that comes after it
70   will be properly delimited and indented.
71
72   To make a sub-list inside an item, use the same format, but prefix
73   the sub-list items with "-", like this:
74
75*flags*
76: Flags that control the configuration of the CQ.
77
78- *FI_WRITE*
79: Indicates that the application requires support for inserting user
80  events into the CQ.  If this flag is set, then the fi_cq_write and
81  fi_cq_writeerr operations must be supported by the provider.  If the
82  FI_WRITE flag is not set, then the application may not invoke
83  fi_cq_write of fi_cq_writeerr.
84
853. There's a small number of places in the libfabric man pages where
86   there are unnumbered lists with deliberate line breaks.  For
87   example:
88
89fi_atomic / fi_atomicv
90fi_atomicto / fi_atomicmsg
91: Initiates an atomic operation to remote memory
92
93   Note the first line is "fi_atomic / fi_atomicv", and then there is
94   a deliberate line break, and then the second line is "fi_atomicto /
95   fi_atomicmsg".
96
97   To effect the deliberate line break, you have to put two blank
98   spaces after "fi_atomicv".  To show that graphically (showing "_"
99   for " "):
100
101fi_atomic / fi_atomicv__
102fi_atomicto / fi_atomicmsg
103: Initiates an atomic operation to remote memory
104
1054. The "SEE ALSO" items at the end of each man page are linked to
106   their corresponding man pages.  Note that the links are made to
107   ".html" files -- *not* ".md" files.  If you care, the reason is
108   because the Github web servers statically generate .html files from
109   the .md files when you git push to the gh-pages branch.  Hence, the
110   man pages are actually served from static .html files on the Github
111   web servers.
112
113   Also, since links are meaningless in nroff, they are effectively
114   ignored in the resulting nroff output.
115
116Workflow
117========
118
119The workflow is like this:
120
1211. Developer edits .<digit>.md files for new changes.
122
1232. In a perfect world, the developer makes perfect edits and pushes
124   the changes up to `master`.  An automated cron job will eventually
125   notice the new pages, and do two things:
126
127   2a. Copy the modified Markdown pages to the `gh-master` branch (so
128       that they go live on the web site).
129
130   2b. Re-generate any relevant nroff man pages in `master`.
131
132   The automated cron job actually does exist and does these things,
133   but it should only be relied upon once a developer is sure that
134   their changes to the Markdown man pages are correct.
135
1363. To check that the changes will render properly, developers should
137   do two things:
138
139   3a. Run "make nroff".  This will convert all the Markdown man pages
140       into nroff man pages (in the man/ directory).  Check to ensure
141       that your changes look appropriate in the rendered nroff
142       output.
143
144       *CAUTION* The "pandoc" utility is used to generate the nroff
145       files from the Markdown source.  Different versions of pandoc
146       will generate slightly different nroff output.  Meaning: when
147       you run "make nroff", you might end up changing every nroff man
148       page, simply because your version of pandoc is different than
149       the last person who ran it.  Please only check in your changes,
150       if possible.
151
152   3b. Check out the `gh-pages` branch from libfabric and copy any
153       modified Markdown pages into the "master/man" directory (i.e.,
154       the directory for man pages from the master development
155       branch).
156
157       Then run the "jekyll serve" command from the top-level
158       directory in `gh-pages`.  This runs a local web server on your
159       computer and renders the Markdown files into HTML such that you
160       can point a browser to http://127.0.0.1:4000 and see the web
161       site.
162
163       If you make any changes to files in the tree where "jekyll" is
164       running, Jekyll will notice the changes and automatically
165       re-generate the relevant HTML.  Meaning: you can just refresh
166       the page from http://127.0.0.1:4000 in your browser and you'll
167       see your changes -- there's no need to restart Jekyll to force
168       it to notice new changes.
169