source: rtems-libbsd/libbsd.txt @ cc5f4b2

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since cc5f4b2 was cc5f4b2, checked in by Sebastian Huber <sebastian.huber@…>, on 10/10/13 at 13:00:20

Use default PID value for all process identifiers

  • Property mode set to 100644
File size: 24.9 KB
Line 
1RTEMS BSD USB and TCP/IP Developers Guide
2=========================================
3Joel Sherrill <joel.sherrill@oarcorp.com>
4:Author Initials: JRS
5:toc:
6:icons:
7:numbered:
8:website: http://www.rtems.org/
9
10RTEMS uses FreeBSD as the source of its TCP/IP and USB stacks.
11This is a developers guide which captures information on the
12process of merging code from FreeBSD, building this library,
13RTEMS specific support files, and general guidelines on what
14modifications to the FreeBSD source are permitted.
15
16Goals of this effort are:
17
18* Update TCP/IP and provide USB in RTEMS
19* Ease updating to future FreeBSD versions
20* Ease tracking changes in FreeBSD code
21* Minimize manual changes in FreeBSD code
22* Define stable kernel/device driver API which is implemented
23by both RTEMS and FreeBSD. This is the foundation of the port.
24
25We will work to push our changes upstream to the FreeBSD Project
26and minimize changes required at each update point.
27
28**************************************************************
29This is a work in progress and is very likely to be incomplete.
30Please help by adding to it.
31**************************************************************
32
33== Source Code Version Information
34
35* FreeBSD 8.2 SVN r255967
36* RTEMS 4.11
37  - BSP must have support for all new BSD sys sections
38  - It is preferable if the BSP uses linkcmds.base.
39  - BSP must be from an architecture with Programmable Interrupt Controller
40    interrupt model.
41
42The latest port uses the FreeBSD sources as a Git submodule which will
43generally be referred to as the FreeBSD source in this document.  Previously a
44FreeBSD 8.2 SVN checkout was used.  The SVN checkout command corresponding to
45the current Git submodule commit is this
46  svn co http://svn.freebsd.org/base/releng/8.2 -r255967 freebsd-8.2
47
48== Issues and To Do
49* Per-CPU data should be enabled once the new stack is ready for SMP.
50
51* Per-CPU NETISR(9) should be enabled onece the new stack is ready for SMP.
52
53* Multiple routing tables are not supported.  Every FIB value is set to zero
54  (= BSD_DEFAULT_FIB).
55
56* Process identifiers are not supported.  Every PID value is set to zero
57  (= BSD_DEFAULT_PID).
58
59* Sebastian Huber and Joel Sherrill discussed the need for a a basic USB
60  functionality test that is known to work on qemu pc.
61
62* Adapt generic IRQ PIC interface code to Simple Vectored Interrupt Model
63  so that those architectures can use new TCP/IP and USB code.
64
65* freebsd-userspace/rtems/include/sys/syslog.h is a copy from the old
66  RTEMS TCP/IP stack. For some reason, the __printflike markers do not
67  compile in this environment. We may want to use the FreeBSD syslog.h
68  and get this addressed.
69
70* in_cksum implementations for architectures not supported by FreeBSD.
71  This will require figuring out where to put implementations that do
72  not originate from FreeBSD and are populated via the script.
73
74* linker section issues: I have undefined symbols for
75  `_bsd__start_set_sysinit_set` and `_bsd__stop_set_sysinit_set`.
76  Is this the only type of new section magic?  What about the old sysctl_set?
77  I added this to my linkcmds. 
78
79[listing]
80----
81    /* sysinit section? */
82    . = ALIGN (16);
83    _bsd__start_set_sysinit_set = .;
84    *(set_sys_init_*);
85    _bsd__stop_set_sysinit_set = .;
86
87----
88
89* Why is the interrupt server used?  The BSD interrupt handlers can block on
90synchronization primitives like mutexes.  This is in contrast to RTEMS
91interrupt service routines.  The BSPs using the generic interrupt support must
92implement the `bsp_interrupt_vector_enable()` and
93`bsp_interrupt_vector_disable()` routines.  They normally enable/disable a
94particular interrupt source at the interrupt controller.  This can be used to
95implement the interrupt server.  The interrupt server is a task that wakes-up
96in case an associated interrupt happens.  The interrupt source is disabled in
97a generic interrupt handler that wakes-up the interrupt server task.   Once the
98postponed interrupt processing is performed in the interrupt server the
99interrupt source is enabled again.
100
101* Convert all BSP linkcmds to use a linkcmds.base so the sections are
102easier to insert.
103
104* rtems-bsd-init-with-irq.c:
105  rtems_bsd_initialize_with_interrupt_server() has reference to
106    rtems_interrupt_server_initialize() and this method is unimplemented
107    - XXX BSP implements pieces
108    - BSPs using this software stack must support it apparently.
109    - What about Simple Vectored architectures?
110
111* We carried over use of notepad 0 for per task information. This should
112be changed.
113
114* maxproc variable referenced by rtems-bsd-resource.c.  What should it
115be set to?
116
117* ngroups_max variable referenced by rtems-bsd-prot.c.  - What should
118it be set to?
119
120* NIC Device Drivers
121- Only common PCI NIC drivers have been included in the initial set. These
122do not include any system on chip or ISA drivers.
123- PCI configuration probe does not appear to happen to determine if a
124NIC is in I/O or memory space. We have worked around this by using a
125static hint to tell the fxp driver the correct mode. But this needs to
126be addressed.
127- The ISA drivers require more BSD infrastructure to be addressed. This was
128outside the scope of the initial porting effort.
129
130== FreeBSD Source
131
132You should be able to rely on FreebSD manual pages and documentation
133for details on the code itself.
134
135=== Automatically Generated FreeBSD Files
136
137The FreeBSD source tarball includes a file named Makefile.rtems which
138has stanzas to automatically generate some files using awk. For details
139on this, see http://www.freebsd.org/cgi/man.cgi?query=kobj&apropos=0&sektion=0&manpath=FreeBSD+9.0-RELEASE&arch=default&format=html
140
141XXX This needs more detail.
142
143=== Rules for Modifying FreeBSD Source
144
145* Only add lines.  Subtract code by added "ifndef __rtems__". This makes
146merging easier in the future.
147
148== libbsd Source
149
150=== What is in git
151
152The git source is a self-contained kit with FreeBSD and RTEMS components
153pre-merged. The Makefile in this kit is automatically generated.
154
155Any changes to sources in the freebsd or contrib directories will need to
156be merged upstream into our master FreeBSD svn checkout.
157
158The FreeBSD sources managed in the rtems-libbsd git repository (e.g. contrib
159and freebsd directories) contain the "managed" version of the
160FreeBSD source.  The FreeBSD SVN source is the "master" version. The
161freebsd-to-rtems.py script is used to transfer files between the two
162trees. In general terms, if you have modified FreeBSD (i.e. anything in the
163freebsd directory) in the rtems-libbsd tree, you will need to run the script
164in "revert" or "reverse" mode using the -R switch. This will copy the source
165back to your local copy of the FreeBSD source so you can run "svn diff" against
166the upstream FreeBSD source. If you want to transfer source files from the
167FreeBSD SVN checkout to the rtems-libbsd tree, then you must run the script in
168"forward" mode (the default).
169
170=== Building rtems-libbsd source
171
172You need to configure RTEMS for the desired BSP and install it. The
173following is the script used to build the powerpc/psim BSP for our
174internal testing purposes:
175
176[listing]
177----
178#! /bin/sh
179
180cd ${HOME}/newbsd
181rm -rf b-psim
182mkdir b-psim
183cd b-psim
184../git/rtems/configure --target=powerpc-rtems4.11 \
185  --enable-rtemsbsp=psim --disable-networking \
186  --enable-tests=samples \
187  --prefix=${HOME}/newbsd/bsp-install >c.log 2>&1 && \
188  make >b.log 2>&1 && \
189  make install >i.log 2>&1
190echo $?
191----
192
193Then edit the file config.inc to set RTEMS_MAKEFILE_PATH appropriately
194to indicate the ${prefix}/${target}/${BSP}.  Continuing on the above,
195the config.inc used to match the above is:
196
197[listing]
198----
199RTEMS_MAKEFILE_PATH = ${HOME}/newbsd/bsp-install/powerpc-rtems4.11/psim/
200INSTALL_BASE = ${HOME}/newbsd/install
201----
202
203The above installs the rtems-libbsd kit into a separate place from
204RTEMS and the BSP. The rtems-libbsd tests are built against an installed
205image of the rtems-libbsd. By keeping it in a separate installation point
206from RTEMS itself, this makes it easier to remove a libbsd installation
207and have a clean test point.
208
209[listing]
210----
211make
212make install
213make -C testsuite
214----
215
216At this point, we expect multiple linker errors. That is what we are
217currently working on.
218
219=== Organization
220
221The top level directory contains a few directories and files. The following
222are important to understand:
223
224* freebsd-to-rtems.py - script to convert to and free FreeBSD and RTEMS trees
225* Makefile - automatically generated
226* contrib/ - from FreeBSD by script.
227* freebsd/ - from FreeBSD by script.
228* rtemsbsd/ - RTEMS specific implementations of FreeBSD kernel support routines.
229* testsuite/ - RTEMS specific tests
230* libbsd.txt - Documentation in Asciidoc
231
232== Moving Code Between FreeBSD SVN and rtems-libbsd
233
234The script freebsd-to-rtems.py is used to copy code from FreeBSD to the
235rtems-libbsd tree and to reverse this process. This script attempts to
236automate this process as much as possible and performs some transformations
237on the FreeBSD code. Its command line arguments are shown below:
238
239[listing]
240----
241freebsd-to-rtems.py [args]
242  -?|-h|--help     print this and exit
243  -d|--dry-run     run program but no modifications
244  -D|--diff        provide diff of files between trees
245  -e|--early-exit  evaluate arguments, print results, and exit
246  -m|--makefile    just generate Makefile
247  -R|--reverse     default FreeBSD -> RTEMS, reverse that
248  -r|--rtems       RTEMS directory
249  -f|--freebsd     FreeBSD directory
250  -v|--verbose     enable verbose output mode
251----
252
253In its default mode of operation, freebsd-to-rtems.py is used to copy code
254from FreeBSD to the rtems-libbsd tree and perform transformations.  In forward
255mode, the script may be requested to just generate the Makefile.
256
257In "reverse mode", this script undoes those transformations and copies
258the source code back to the FreeBSD SVN tree. This allows us to do
259'svn diff', evaluate changes made by the RTEMS Project, and report changes
260back to FreeBSD upstream.
261
262In either mode, the script may be asked to perform a dry-run or be verbose.
263Also, in either mode, the script is also smart enough to avoid copying over
264files which have not changed. This means that the timestamps of files are
265not changed unless the contents change. The script will also report the
266number of files which changed. In verbose mode, the script will print
267the name of the files which are changed.
268
269The following is an example forward run with no changes.
270
271[listing]
272----
273$ ~/newbsd/git/libbsd-8.2/freebsd-to-rtems.py \
274    -r /home/joel/newbsd/git/libbsd-8.2 \
275    -f /home/joel/newbsd/libbsd/freebsd-8.2 -v
276Verbose:                yes
277Dry Run:                no
278Only Generate Makefile: no
279RTEMS Directory:        /home/joel/newbsd/git/libbsd-8.2
280FreeBSD Directory:      /home/joel/newbsd/libbsd/freebsd-8.2
281Direction:              forward
282Generating into /home/joel/newbsd/git/libbsd-8.2
2830 files were changed.
284----
285
286The script may also be used to generate a diff in either forward or reverse
287direction.
288
289== Initialization of rtems-libbsd
290
291The initialization of the rtems-libbsd is based on the FreeBSD SYSINIT(9)
292infrastructure.  The key to initializing a system is to ensure that the desired
293device drivers are explicitly pulled into the linked application.  This plus
294linking against the libbsd library will pull in the necessary FreeBSD
295infrastructure.
296
297The FreeBSD kernel is not a library like the RTEMS kernel.  It is a bunch of
298object files linked together.  If we have a library, then creating the
299executable is simple.  We begin with a start symbol and recursively resolve all
300references.  With a bunch of object files linked together we need a different
301mechanism.  Most object files don't know each other.  Lets say we have a driver
302module.  The rest of the system has no references to this driver module.  The
303driver module needs a way to tell the rest of the system: Hey, kernel I am
304here, please use my services!
305
306This registration of independent components is performed by SYSINIT(9) and
307specializations:
308
309http://www.freebsd.org/cgi/man.cgi?query=SYSINIT
310
311The SYSINIT(9) uses some global data structures that are placed in a certain
312section.  In the linker command file we need this:
313
314[listing]
315----
316.robsdsets : {
317    _bsd__start_set_modmetadata_set = .;
318    *(_bsd_set_modmetadata_set);
319    _bsd__stop_set_modmetadata_set = .;
320    _bsd__start_set_sysctl_set = .;
321    *(_bsd_set_sysctl_set);
322    _bsd__stop_set_sysctl_set = .;
323} > REGION_RODATA AT > REGION_RODATA_LOAD
324
325.rwbsdsets : {
326    _bsd__start_set_sysinit_set = .;
327    *(_bsd_set_sysinit_set);
328    _bsd__stop_set_sysinit_set = .;
329} > REGION_DATA AT > REGION_DATA_LOAD
330----
331
332Here you can see, that these global data structures are collected into
333continuous memory areas.  This memory area can be identified by start and stop
334symbols.  This constructs a table of uniform items.
335
336The low level FreeBSD code calls at some time during the initialization the
337mi_startup() function (machine independent startup).  This function will sort
338the SYSINIT(9) set and call handler functions which perform further
339initialization.  The last step is the scheduler invocation.
340
341The SYSINIT(9) routines are run in mi_startup() which is called by
342rtems_bsd_initialize().
343
344This is also explained in "The Design and Implementation of the FreeBSD
345Operating System" section 14.3 "Kernel Initialization".
346
347In RTEMS we have a library and not a bunch of object files.  Thus we need a way
348to pull-in the desired services out of the libbsd.  Here the
349"rtems-bsd-sysinit.h" comes into play.  The SYSINIT(9) macros have been
350modified and extended for RTEMS in "sys/kernel.h":
351
352[listing]
353----
354#ifndef __rtems__
355#define    C_SYSINIT(uniquifier, subsystem, order, func, ident) \
356    static struct sysinit uniquifier ## _sys_init = { \
357        subsystem, \
358        order, \
359        func, \
360        (ident) \
361    }; \
362    DATA_SET(sysinit_set,uniquifier ## _sys_init)
363#else /* __rtems__ */
364#define    SYSINIT_ENTRY_NAME(uniquifier) \
365    _bsd_ ## uniquifier ## _sys_init
366#define    SYSINIT_REFERENCE_NAME(uniquifier) \
367    _bsd_ ## uniquifier ## _sys_init_ref
368#define    C_SYSINIT(uniquifier, subsystem, order, func, ident) \
369    struct sysinit SYSINIT_ENTRY_NAME(uniquifier) = { \
370        subsystem, \
371        order, \
372        func, \
373        (ident) \
374    }; \
375    DATA_SET(sysinit_set,SYSINIT_ENTRY_NAME(uniquifier))
376#define    SYSINIT_REFERENCE(uniquifier) \
377    extern struct sysinit SYSINIT_ENTRY_NAME(uniquifier); \
378    static struct sysinit const * const \
379    SYSINIT_REFERENCE_NAME(uniquifier) __used \
380    = &SYSINIT_ENTRY_NAME(uniquifier)
381#define    SYSINIT_MODULE_REFERENCE(mod) \
382    SYSINIT_REFERENCE(mod ## module)
383#define    SYSINIT_DRIVER_REFERENCE(driver, bus) \
384    SYSINIT_MODULE_REFERENCE(driver ## _ ## bus)
385#endif /* __rtems__ */
386----
387
388Here you see that the SYSINIT(9) entries are no longer static.  The
389*_REFERENCE() macros will create references to the corresponding modules which
390are later resolved by the linker.  The application has to provide an object
391file with references to all required FreeBSD modules.
392
393The FreeBSD device model is quite elaborated (with follow-ups):
394
395http://www.freebsd.org/cgi/man.cgi?query=driver
396
397The devices form a tree with the Nexus device at a high-level.  This Nexus
398device is architecture specific in FreeBSD.  In RTEMS we have our own Nexus
399device, see "rtems-bsd-nexus.c".  It uses a table to add child devices:
400
401[listing]
402----
403const char *const _bsd_nexus_devices [] = {
404    #ifdef NEED_USB_OHCI
405        "ohci",
406    #endif
407    #ifdef NEED_USB_EHCI
408        "ehci",
409    #endif
410    #ifdef NEED_SDHC
411        "sdhci",
412    #endif
413    NULL
414};
415----
416
417This table must be provided by the application.
418
419=== SYSCTL_NODE Example
420
421During development, we had an undefined reference to
422_bsd_sysctl__net_children that we had trouble tracking down. Thanks to
423Chris Johns, we located it. He explained how to read SYSCTL_NODE
424definitions. This line from freebsd/netinet/in_proto.c is attempting
425to add the "inet" node to the parent node "_net".
426
427[listing]
428----
429SYSCTL_NODE(_net,      PF_INET,         inet,   CTLFLAG_RW, 0,
430        "Internet Family");
431----
432
433Our problem was that we could not find where _bsd_sysctl__net_children
434was defined. Chris suggested that when in doubt compile with -save-temps
435and look at the preprocessed .i files. But he did not need that. He
436explained that this the symbol name _bsd_sysctl__net_children was
437automatically generated by a SYSCTL_NODE as follows:
438
439* _bsd_ - added by RTEMS modifications to SYSCTL_NODE macro
440* sysctl_ - boilerplace added by SYSCTL_NODE macro
441* "" - empty string for parent node
442* net - name of SYSCTL_NODE
443* children - added by SYSCTL macros
444 
445This was all generated by a support macro declaring the node as this:
446
447[listing]
448----
449struct sysctl_oid_list SYSCTL_NODE_CHILDREN(parent, name);
450----
451
452Given this information, we located this SYSCTL_NODE declaration in
453kern/kern_mib.c
454
455[listing]
456----
457SYSCTL_NODE(, CTL_KERN,   kern,   CTLFLAG_RW, 0,
458        "High kernel, proc, limits &c");
459----
460
461== Core FreeBSD APIs and RTEMS Replacements ==
462
463=== SX(9) (Shared/exclusive locks) ===
464
465http://www.freebsd.org/cgi/man.cgi?query=sx
466
467Binary semaphores (this neglects the ability to allow shared access).
468
469=== MUTEX(9) (Mutual exclusion) ===
470
471http://www.freebsd.org/cgi/man.cgi?query=mutex
472
473Binary semaphores (not recursive mutexes are not supported this way).
474
475=== RWLOCK(9) (Reader/writer lock) ===
476
477http://www.freebsd.org/cgi/man.cgi?query=rwlock
478
479POSIX r/w lock.
480
481=== RMLOCK(9) (Reader/writer lock optimized for mostly read access patterns) ===
482
483Note:  This object was implemented as a wrapper for RWLOCK in the rm_lock header file.
484
485http://www.freebsd.org/cgi/man.cgi?query=rmlock
486
487POSIX r/w lock.
488
489=== CONDVAR(9) (Condition variables) ===
490
491http://www.freebsd.org/cgi/man.cgi?query=condvar
492
493POSIX condition variables with modifications (hack).
494
495=== CALLOUT(9) (Timer functions) ===
496
497http://www.freebsd.org/cgi/man.cgi?query=callout
498
499Timer server.
500
501=== TASKQUEUE(9) (Asynchronous task execution) ===
502
503http://www.freebsd.org/cgi/man.cgi?query=taskqueue
504
505TBD.
506
507=== KTHREAD(9), KPROC(9) (Tasks) ===
508
509http://www.freebsd.org/cgi/man.cgi?query=kthread
510
511http://www.freebsd.org/cgi/man.cgi?query=kproc
512
513Tasks.
514
515=== ZONE(9) (Zone allocator) ===
516
517http://www.freebsd.org/cgi/man.cgi?query=zone
518
519TBD.
520
521=== devfs (Device file system) ===
522
523Dummy, IMFS or new implementation (currently dummy).
524
525=== psignal (Signals) ===
526
527TBD.  Seems to be not needed.
528
529=== poll, select ===
530
531TBD.  Seems to be not needed.
532
533=== RMAN(9) (Resource management) ===
534
535http://www.freebsd.org/cgi/man.cgi?query=rman
536
537TBD.  Seems to be not needed.
538
539=== DEVCLASS(9), DEVICE(9), DRIVER(9), MAKE_DEV(9) (Device management) ===
540
541http://www.freebsd.org/cgi/man.cgi?query=devclass
542
543http://www.freebsd.org/cgi/man.cgi?query=device
544
545http://www.freebsd.org/cgi/man.cgi?query=driver
546
547http://www.freebsd.org/cgi/man.cgi?query=make_dev
548
549Use FreeBSD implementation as far as possible.  FreeBSD has a nice API for
550dynamic device handling.  It may be interesting for RTEMS to use this API
551internally in the future.
552
553=== BUS_SPACE(9), BUS_DMA(9) (Bus and DMA access) ===
554
555http://www.freebsd.org/cgi/man.cgi?query=bus_space
556
557http://www.freebsd.org/cgi/man.cgi?query=bus_dma
558
559Likely BSP dependent.  A default implementation for memory mapped linear access
560is easy to provide.  The current heap implementation supports all properties
561demanded by bus_dma (including the boundary constraint).
562
563== RTEMS Replacements by File Description ==
564
565Note:  Files with a status of USB are used by the USB test and have at least
566been partially tested.  If they contain both USB and Nic, then they are used
567by both and MAY contain methods that have not been tested yet.  Files that
568are only used by the Nic test are the most suspect.
569
570[listing]
571----
572rtems-libbsd File:      rtems-bsd-assert.c
573FreeBSD File:           rtems-bsd-config.h redefines BSD_ASSERT.
574Description:            This file contains the support method rtems_bsd_assert_func().
575Status:                 USB, Nic
576
577rtems-libbsd File:      rtems-bsd-autoconf.c
578FreeBSD File:           FreeBSD has BSP specific autoconf.c
579Description:            This file contains configuration methods that are used to setup the system.
580Status:                 USB
581
582rtems-libbsd File:      rtems-bsd-bus-dma.c
583FreeBSD File:           FreeBSD has BSP specific busdma_machdep.c
584Description:           
585Status:                 USB, Nic
586
587rtems-libbsd File:      rtems-bsd-bus-dma-mbuf.c       
588FreeBSD File:           FreeBSD has BSP specific busdma_machdep.c
589Description:           
590Status:                 Nic
591
592rtems-libbsd File:      rtems-bsd-callout.c             
593FreeBSD File:           kern/kern_timeout.c
594Description:           
595Status:                 USB, Nic
596
597rtems-libbsd File:      rtems-bsd-cam.c
598FreeBSD File:           cam/cam_sim.c
599Description:           
600Status:                 USB
601
602rtems-libbsd File:      rtems-bsd-condvar.c             
603FreeBSD File:           kern/kern_condvar.c
604Description:           
605Status:                 USB
606
607rtems-libbsd File:      rtems-bsd-copyinout.c
608FreeBSD File:           bsp specific copyinout.c )
609Description:            Note: The FreeBSD file is split with some methods being in rtems-bsd-support
610Status:                 Nic
611
612rtems-libbsd File:      rtems-bsd-delay.c
613FreeBSD File:           bsp specific file with multiple names
614Description:           
615Status:                 USB, Nic
616
617rtems-libbsd File:      rtems-bsd-descrip.c
618FreeBSD File:           kern/kern_descrip.c
619Description:           
620Status:                 Nic
621
622rtems-libbsd File:      rtems-bsd-generic.c             
623FreeBSD File:           kern/sys_generic.c
624Description:           
625Status:                 Nic
626
627rtems-libbsd File:      rtems-bsd-init.c
628FreeBSD File:           N/A
629Description:           
630Status:                 USB, Nic
631
632rtems-libbsd File:      rtems-bsd-init-with-irq.c
633FreeBSD File:           N/A
634Description:           
635Status:                 USB, Nic
636
637rtems-libbsd File:      rtems-bsd-jail.c
638FreeBSD File:           kern/kern_jail.c
639Description:           
640Status:                 USB, Nic
641
642rtems-libbsd File:      rtems-bsd-lock.c
643FreeBSD File:           kern/subr_lock.c
644Description:           
645Status:                 USB, Nic
646
647rtems-libbsd File:      rtems-bsd-log.c         
648FreeBSD File:           kern/subr_prf.c
649Description:           
650Status:                 Nic
651
652rtems-libbsd File:      rtems-bsd-malloc.c
653FreeBSD File:           kern/kern_malloc.c
654Description:           
655Status:                 USB, Nic
656
657rtems-libbsd File:      rtems-bsd-mutex.c
658FreeBSD File:           kern/kern_mutex.c
659Description:           
660Status:                 USB, Nic
661
662rtems-libbsd File:      rtems-bsd-newproc.c
663FreeBSD File:           N/A
664Description:           
665Status:                 Nic
666
667rtems-libbsd File:      rtems-bsd-nexus.c
668FreeBSD File:           bsp specific nexus.c
669Description:           
670Status:                 USB
671
672rtems-libbsd File:      rtems-bsd-panic.c               
673FreeBSD File:           boot/common/panic.c
674Description:           
675Status:                 USB, Nic
676
677rtems-libbsd File:      rtems-bsd-rwlock.c             
678FreeBSD File:           kern_rwlock.c
679Description:           
680Status:                 USB, Nic
681
682rtems-libbsd File:      rtems-bsd-shell.c               
683FreeBSD File:           N/A
684Description:           
685Status:                 USB
686
687rtems-libbsd File:      rtems-bsd-signal.c             
688FreeBSD File:           kern/kern_sig.c
689Description:           
690Status:                 Nic
691
692rtems-libbsd File:      rtems-bsd-smp.c                 
693FreeBSD File:           N/A
694Description:           
695Status:                 Nic
696
697rtems-libbsd File:      rtems-bsd-support.c             
698FreeBSD File:           bsp specific copyinout.c
699Description:            Note: the FreeBSD file is split with some methods being in rtems-bsd-copyinout.
700Status:                 USB, Nic
701
702rtems-libbsd File:      rtems-bsd-sx.c                 
703FreeBSD File:           kern/kern_sx.c
704Description:            Status: USB, Nic
705
706rtems-libbsd File:      rtems-bsd-synch.c               
707FreeBSD File:           kern/kern_synch.c
708Description:           
709Status:                 USB, Nic
710
711rtems-libbsd File:      rtems-bsd-syscalls.c           
712FreeBSD File:           User API for kern/uipc_syscalls.c
713Description:           
714Status:                 Nic
715
716rtems-libbsd File:      rtems-bsd-sysctlbyname.c       
717FreeBSD File:           User API for sysctlbyname(3)
718Description:           
719Status:
720
721rtems-libbsd File:      rtems-bsd-sysctl.c             
722FreeBSD File:           User API for sysctl(8)
723Description:           
724Status:
725
726rtems-libbsd File:      rtems-bsd-sysctlnametomib.c     
727FreeBSD File:           User API for sysctlnametomib
728Description:           
729Status:
730
731rtems-libbsd File:      rtems-bsd-taskqueue.c           
732FreeBSD File:           kern/subr_taskqueue.c
733Description:           
734Status:                 Nic
735
736rtems-libbsd File:      rtems-bsd-thread.c                     
737FreeBSD File:           kern/kern_kthread.c
738Description:           
739Status:                 USB, Nic
740
741rtems-libbsd File:      rtems-bsd-timeout.c             
742FreeBSD File:           kern/kern_timeout.c
743Description:           
744Status:                 Nic
745
746rtems-libbsd File:      rtems-bsd-timesupport.c         
747FreeBSD File:           kern/kern_clock.c
748Description:           
749Status:                 Nic
750
751rtems-libbsd File:      rtems-bsd-vm_glue.c             
752FreeBSD File:           vm/vm_glue.c
753Description:           
754Status:                 USB, Nic
755----
756
757== Notes by File ==
758
759altq_subr.c - Arbitrary choices were made in this file that RTEMS would
760not support tsc frequency change.  Additionally, the clock frequency
761for machclk_freq is always measured for RTEMS.
762
763conf.h - In order to add make_dev and destroy_dev, variables in the cdev
764structure that were not being used were conditionally compiled out. The
765capability of supporting children did not appear to be needed and was
766not implemented in the rtems version of these routines.
767 
768== NICs Status ==
769
770[listing]
771----
772Driver                  Symbol                          Status
773======                  ======                          ======
774RealTek                 _bsd_re_pcimodule_sys_init      Links
775EtherExpress            _bsd_fxp_pcimodule_sys_init     Links
776DEC tulip               _bsd_dc_pcimodule_sys_init      Links
777Broadcom BCM57xxx       _bsd_bce_pcimodule_sys_init     Links
778Broadcom BCM4401        _bsd_bfe_pcimodule_sys_init     Links
779Broadcom BCM570x        _bsd_bge_pcimodule_sys_init     Needs Symbols (A)
780E1000 IGB               _bsd_igb_pcimodule_sys_init     Links
781E1000 EM                _bsd_em_pcimodule_sys_init      Links
782----
783
784
785Symbols (A)
786         pci_get_vpd_ident
787 
788== Problems to report to FreeBSD ==
789
790The MMAP_NOT_AVAILABLE define is inverted on its usage.  When it is
791defined the mmap method is called. Additionally, it is not used
792thoroughly. It is not used in the unmap portion of the source.
793The file rec_open.c uses the define MMAP_NOT_AVAILABLE to wrap
794the call to mmap and file rec_close.c uses the munmap method.
795
796
797
Note: See TracBrowser for help on using the repository browser.