summaryrefslogtreecommitdiffstats
path: root/rtemsbsd
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-08-21 13:47:02 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-21 10:29:41 +0200
commitbcdce02d9bc8150e1d191ed5ca9da45b7604964a (patch)
tree3b2faf509db7672ee1fc98857736470be97e7ed8 /rtemsbsd
parentUpdate to FreeBSD head 2018-04-01 (diff)
downloadrtems-libbsd-bcdce02d9bc8150e1d191ed5ca9da45b7604964a.tar.bz2
Update to FreeBSD head 2018-06-01
Git mirror commit fb63610a69b0eb7f69a201ba05c4c1a7a2739cf9. Update #3472.
Diffstat (limited to 'rtemsbsd')
-rw-r--r--rtemsbsd/include/machine/atomic.h33
-rw-r--r--rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h115
-rw-r--r--rtemsbsd/include/sys/disk_zone.h1
-rw-r--r--rtemsbsd/include/sys/epoch.h141
-rw-r--r--rtemsbsd/rtems/rtems-kernel-epoch.c334
-rw-r--r--rtemsbsd/rtems/rtems-kernel-jail.c2
-rwxr-xr-xrtemsbsd/sys/arm/lpc/if_lpe.c18
7 files changed, 606 insertions, 38 deletions
diff --git a/rtemsbsd/include/machine/atomic.h b/rtemsbsd/include/machine/atomic.h
index f7de4178..052df5a7 100644
--- a/rtemsbsd/include/machine/atomic.h
+++ b/rtemsbsd/include/machine/atomic.h
@@ -380,6 +380,39 @@ atomic_cmpset_int(volatile int *p, int cmp, int set)
}
static inline int
+atomic_fcmpset_int(volatile int *p, int *cmp, int set)
+{
+ int rv;
+
+#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC)
+ std::atomic_int *q =
+ reinterpret_cast<std::atomic_int *>(const_cast<int *>(p));
+
+ rv = q->compare_exchange_strong(*cmp, set, std::memory_order_seq_cst,
+ std::memory_order_relaxed);
+#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
+ atomic_int *q = (atomic_int *)RTEMS_DEVOLATILE(int *, p);
+
+ rv = atomic_compare_exchange_strong_explicit(q, cmp, set,
+ memory_order_seq_cst, memory_order_relaxed);
+#else
+ rtems_interrupt_level level;
+ int actual;
+
+ rtems_interrupt_disable(level);
+ actual = *p;
+ rv = actual == *cmp;
+ *cmp = actual;
+ if (rv) {
+ *p = set;
+ }
+ rtems_interrupt_enable(level);
+#endif
+
+ return (rv);
+}
+
+static inline int
atomic_cmpset_acq_int(volatile int *p, int cmp, int set)
{
int rv;
diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
index fa2e946c..f0c4ceb0 100644
--- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
+++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
@@ -45,16 +45,6 @@
#define altq_remove _bsd_altq_remove
#define altq_remove_queue _bsd_altq_remove_queue
#define altqs_inactive_open _bsd_altqs_inactive_open
-#define arcbroadcastaddr _bsd_arcbroadcastaddr
-#define arc_frag_init _bsd_arc_frag_init
-#define arc_frag_next _bsd_arc_frag_next
-#define arc_ifattach _bsd_arc_ifattach
-#define arc_ifdetach _bsd_arc_ifdetach
-#define arc_input _bsd_arc_input
-#define arc_ioctl _bsd_arc_ioctl
-#define arc_isphds _bsd_arc_isphds
-#define arc_output _bsd_arc_output
-#define arc_storelladdr _bsd_arc_storelladdr
#define arp_announce_ifaddr _bsd_arp_announce_ifaddr
#define arp_ifinit _bsd_arp_ifinit
#define arprequest _bsd_arprequest
@@ -351,9 +341,6 @@
#define bridge_control_table _bsd_bridge_control_table
#define bridge_control_table_size _bsd_bridge_control_table_size
#define bridge_dn_p _bsd_bridge_dn_p
-#define bridge_input_p _bsd_bridge_input_p
-#define bridge_linkstate_p _bsd_bridge_linkstate_p
-#define bridge_output_p _bsd_bridge_output_p
#define bridge_rtable_prune_period _bsd_bridge_rtable_prune_period
#define bridge_rtnode_zone _bsd_bridge_rtnode_zone
#define bstp_attach _bsd_bstp_attach
@@ -547,6 +534,19 @@
#define chacha_encrypt_bytes _bsd_chacha_encrypt_bytes
#define chacha_ivsetup _bsd_chacha_ivsetup
#define chacha_keysetup _bsd_chacha_keysetup
+#define _ck_epoch_addref _bsd__ck_epoch_addref
+#define ck_epoch_barrier _bsd_ck_epoch_barrier
+#define ck_epoch_barrier_wait _bsd_ck_epoch_barrier_wait
+#define _ck_epoch_delref _bsd__ck_epoch_delref
+#define ck_epoch_init _bsd_ck_epoch_init
+#define ck_epoch_poll _bsd_ck_epoch_poll
+#define ck_epoch_poll_deferred _bsd_ck_epoch_poll_deferred
+#define ck_epoch_reclaim _bsd_ck_epoch_reclaim
+#define ck_epoch_recycle _bsd_ck_epoch_recycle
+#define ck_epoch_register _bsd_ck_epoch_register
+#define ck_epoch_synchronize _bsd_ck_epoch_synchronize
+#define ck_epoch_synchronize_wait _bsd_ck_epoch_synchronize_wait
+#define ck_epoch_unregister _bsd_ck_epoch_unregister
#define clean_unrhdr _bsd_clean_unrhdr
#define clean_unrhdrl _bsd_clean_unrhdrl
#define ClearCheckNewLink _bsd_ClearCheckNewLink
@@ -692,6 +692,7 @@
#define device_get_sysctl_ctx _bsd_device_get_sysctl_ctx
#define device_get_sysctl_tree _bsd_device_get_sysctl_tree
#define device_get_unit _bsd_device_get_unit
+#define device_has_quiet_children _bsd_device_has_quiet_children
#define device_is_alive _bsd_device_is_alive
#define device_is_attached _bsd_device_is_attached
#define device_is_enabled _bsd_device_is_enabled
@@ -704,6 +705,7 @@
#define device_probe_child _bsd_device_probe_child
#define device_quiesce _bsd_device_quiesce
#define device_quiet _bsd_device_quiet
+#define device_quiet_children _bsd_device_quiet_children
#define device_set_desc _bsd_device_set_desc
#define device_set_desc_copy _bsd_device_set_desc_copy
#define device_set_devclass _bsd_device_set_devclass
@@ -747,7 +749,7 @@
#define dwc_otg_uninit _bsd_dwc_otg_uninit
#define e1000_acquire_nvm_generic _bsd_e1000_acquire_nvm_generic
#define e1000_acquire_phy _bsd_e1000_acquire_phy
-#define e1000_acquire_swfw_sync_i210 _bsd_e1000_acquire_swfw_sync_i210
+#define e1000_acquire_swfw_sync _bsd_e1000_acquire_swfw_sync
#define e1000_blink_led _bsd_e1000_blink_led
#define e1000_blink_led_generic _bsd_e1000_blink_led_generic
#define e1000_calculate_checksum _bsd_e1000_calculate_checksum
@@ -809,7 +811,7 @@
#define e1000_get_cfg_done_generic _bsd_e1000_get_cfg_done_generic
#define e1000_get_eee_status_i354 _bsd_e1000_get_eee_status_i354
#define e1000_get_flash_presence_i210 _bsd_e1000_get_flash_presence_i210
-#define e1000_get_hw_semaphore_generic _bsd_e1000_get_hw_semaphore_generic
+#define e1000_get_hw_semaphore _bsd_e1000_get_hw_semaphore
#define e1000_get_laa_state_82571 _bsd_e1000_get_laa_state_82571
#define e1000_get_pba_block_size _bsd_e1000_get_pba_block_size
#define e1000_get_phy_id _bsd_e1000_get_phy_id
@@ -915,7 +917,7 @@
#define e1000_power_up_phy _bsd_e1000_power_up_phy
#define e1000_power_up_phy_copper _bsd_e1000_power_up_phy_copper
#define e1000_promisc_set_vf _bsd_e1000_promisc_set_vf
-#define e1000_put_hw_semaphore_generic _bsd_e1000_put_hw_semaphore_generic
+#define e1000_put_hw_semaphore _bsd_e1000_put_hw_semaphore
#define e1000_rar_set _bsd_e1000_rar_set
#define e1000_read_emi_reg _bsd_e1000_read_emi_reg
#define e1000_read_emi_reg_locked _bsd_e1000_read_emi_reg_locked
@@ -957,7 +959,7 @@
#define e1000_read_xmdio_reg _bsd_e1000_read_xmdio_reg
#define e1000_release_nvm_generic _bsd_e1000_release_nvm_generic
#define e1000_release_phy _bsd_e1000_release_phy
-#define e1000_release_swfw_sync_i210 _bsd_e1000_release_swfw_sync_i210
+#define e1000_release_swfw_sync _bsd_e1000_release_swfw_sync
#define e1000_reload_nvm _bsd_e1000_reload_nvm
#define e1000_reset_adaptive _bsd_e1000_reset_adaptive
#define e1000_reset_adaptive_generic _bsd_e1000_reset_adaptive_generic
@@ -1071,7 +1073,6 @@
#define encap_attach_func _bsd_encap_attach_func
#define encap_detach _bsd_encap_detach
#define encap_getarg _bsd_encap_getarg
-#define encap_init _bsd_encap_init
#define enc_xform_3des _bsd_enc_xform_3des
#define enc_xform_aes_icm _bsd_enc_xform_aes_icm
#define enc_xform_aes_nist_gcm _bsd_enc_xform_aes_nist_gcm
@@ -1087,6 +1088,12 @@
#define enc_xform_rijndael128 _bsd_enc_xform_rijndael128
#define enc_xform_skipjack _bsd_enc_xform_skipjack
#define eopnotsupp _bsd_eopnotsupp
+#define epoch_call _bsd_epoch_call
+#define epoch_enter_preempt _bsd_epoch_enter_preempt
+#define epoch_exit_preempt _bsd_epoch_exit_preempt
+#define epoch_init _bsd_epoch_init
+#define epoch_wait _bsd_epoch_wait
+#define epoch_wait_preempt _bsd_epoch_wait_preempt
#define esp_enable _bsd_esp_enable
#define esp_hdrsiz _bsd_esp_hdrsiz
#define espstat _bsd_espstat
@@ -1169,9 +1176,6 @@
#define eventhandler_find_list _bsd_eventhandler_find_list
#define eventhandler_prune_list _bsd_eventhandler_prune_list
#define eventhandler_register _bsd_eventhandler_register
-#define fddi_ifattach _bsd_fddi_ifattach
-#define fddi_ifdetach _bsd_fddi_ifdetach
-#define fddi_ioctl _bsd_fddi_ioctl
#define fdt_addrsize_cells _bsd_fdt_addrsize_cells
#define fdt_data_get _bsd_fdt_data_get
#define fdt_data_to_res _bsd_fdt_data_to_res
@@ -1181,20 +1185,16 @@
#define fdt_get_mem_regions _bsd_fdt_get_mem_regions
#define fdt_get_phyaddr _bsd_fdt_get_phyaddr
#define fdt_get_range _bsd_fdt_get_range
+#define fdt_get_reserved_mem _bsd_fdt_get_reserved_mem
#define fdt_get_reserved_regions _bsd_fdt_get_reserved_regions
-#define fdt_get_unit _bsd_fdt_get_unit
#define fdt_ic_list_head _bsd_fdt_ic_list_head
#define fdt_immr_addr _bsd_fdt_immr_addr
#define fdt_immr_pa _bsd_fdt_immr_pa
#define fdt_immr_size _bsd_fdt_immr_size
#define fdt_immr_va _bsd_fdt_immr_va
#define fdt_is_compatible_strict _bsd_fdt_is_compatible_strict
-#define fdt_is_enabled _bsd_fdt_is_enabled
-#define fdt_is_type _bsd_fdt_is_type
#define fdt_parent_addr_cells _bsd_fdt_parent_addr_cells
-#define fdt_pm_is_enabled _bsd_fdt_pm_is_enabled
#define fdt_regsize _bsd_fdt_regsize
-#define fdt_reg_to_rl _bsd_fdt_reg_to_rl
#define fib4_free_nh_ext _bsd_fib4_free_nh_ext
#define fib4_lookup_nh_basic _bsd_fib4_lookup_nh_basic
#define fib4_lookup_nh_ext _bsd_fib4_lookup_nh_ext
@@ -1272,6 +1272,8 @@
#define gif_encapcheck _bsd_gif_encapcheck
#define gif_input _bsd_gif_input
#define gif_output _bsd_gif_output
+#define global_epoch _bsd_global_epoch
+#define global_epoch_preempt _bsd_global_epoch_preempt
#define gpio_alloc_intr_resource _bsd_gpio_alloc_intr_resource
#define gpiobus_acquire_pin _bsd_gpiobus_acquire_pin
#define gpiobus_alloc_ivars _bsd_gpiobus_alloc_ivars
@@ -1284,6 +1286,12 @@
#define gpiobus_release_pin _bsd_gpiobus_release_pin
#define gpio_check_flags _bsd_gpio_check_flags
#define gre_input _bsd_gre_input
+#define grouptaskqueue_enqueue _bsd_grouptaskqueue_enqueue
+#define gtaskqueue_block _bsd_gtaskqueue_block
+#define gtaskqueue_cancel _bsd_gtaskqueue_cancel
+#define gtaskqueue_drain _bsd_gtaskqueue_drain
+#define gtaskqueue_drain_all _bsd_gtaskqueue_drain_all
+#define gtaskqueue_unblock _bsd_gtaskqueue_unblock
#define handlers _bsd_handlers
#define hashdestroy _bsd_hashdestroy
#define hashinit _bsd_hashinit
@@ -1792,6 +1800,8 @@
#define if_attach _bsd_if_attach
#define if_bpfmtap _bsd_if_bpfmtap
#define ifc_alloc_unit _bsd_ifc_alloc_unit
+#define ifc_flags_get _bsd_ifc_flags_get
+#define ifc_flags_set _bsd_ifc_flags_set
#define ifc_free_unit _bsd_ifc_free_unit
#define if_clearhwassist _bsd_if_clearhwassist
#define if_clone_addgroup _bsd_if_clone_addgroup
@@ -1804,6 +1814,7 @@
#define if_clone_list _bsd_if_clone_list
#define if_cloners _bsd_if_cloners
#define if_clone_simple _bsd_if_clone_simple
+#define ifc_name _bsd_ifc_name
#define ifc_name2unit _bsd_ifc_name2unit
#define if_data_copy _bsd_if_data_copy
#define if_dead _bsd_if_dead
@@ -1811,6 +1822,7 @@
#define if_delgroup _bsd_if_delgroup
#define if_delmulti _bsd_if_delmulti
#define if_delmulti_ifma _bsd_if_delmulti_ifma
+#define if_delmulti_ifma_flags _bsd_if_delmulti_ifma_flags
#define if_dequeue _bsd_if_dequeue
#define if_deregister_com_alloc _bsd_if_deregister_com_alloc
#define if_detach _bsd_if_detach
@@ -1818,6 +1830,7 @@
#define if_etherbpfmtap _bsd_if_etherbpfmtap
#define if_findmulti _bsd_if_findmulti
#define if_free _bsd_if_free
+#define if_freemulti _bsd_if_freemulti
#define if_getamcount _bsd_if_getamcount
#define if_getbaudrate _bsd_if_getbaudrate
#define if_getcapabilities _bsd_if_getcapabilities
@@ -1849,8 +1862,10 @@
#define if_input _bsd_if_input
#define ifioctl _bsd_ifioctl
#define if_link_state_change _bsd_if_link_state_change
+#define ifma6_restart _bsd_ifma6_restart
#define if_maddr_rlock _bsd_if_maddr_rlock
#define if_maddr_runlock _bsd_if_maddr_runlock
+#define ifma_restart _bsd_ifma_restart
#define ifmedia_add _bsd_ifmedia_add
#define ifmedia_baudrate _bsd_ifmedia_baudrate
#define ifmedia_init _bsd_ifmedia_init
@@ -1973,7 +1988,9 @@
#define in6_inithead _bsd_in6_inithead
#define in6_is_addr_deprecated _bsd_in6_is_addr_deprecated
#define in6_joingroup _bsd_in6_joingroup
+#define in6_joingroup_locked _bsd_in6_joingroup_locked
#define in6_leavegroup _bsd_in6_leavegroup
+#define in6_leavegroup_locked _bsd_in6_leavegroup_locked
#define in6_localaddr _bsd_in6_localaddr
#define in6_localip _bsd_in6_localip
#define in6_losing _bsd_in6_losing
@@ -1988,16 +2005,16 @@
#define in6_matchlen _bsd_in6_matchlen
#define in6_maxmtu _bsd_in6_maxmtu
#define in6_mcast_loop _bsd_in6_mcast_loop
-#define in6_mc_join _bsd_in6_mc_join
-#define in6_mc_join_locked _bsd_in6_mc_join_locked
#define in6m_clear_recorded _bsd_in6m_clear_recorded
-#define in6_mc_leave _bsd_in6_mc_leave
-#define in6_mc_leave_locked _bsd_in6_mc_leave_locked
#define in6m_commit _bsd_in6m_commit
+#define in6m_disconnect _bsd_in6m_disconnect
#define in6m_print _bsd_in6m_print
#define in6m_record_source _bsd_in6m_record_source
-#define in6m_release_locked _bsd_in6m_release_locked
-#define in6_multi_mtx _bsd_in6_multi_mtx
+#define in6m_release_deferred _bsd_in6m_release_deferred
+#define in6m_release_list_deferred _bsd_in6m_release_list_deferred
+#define in6_multi_free_mtx _bsd_in6_multi_free_mtx
+#define in6_multi_list_mtx _bsd_in6_multi_list_mtx
+#define in6_multi_sx _bsd_in6_multi_sx
#define in6_newaddrmsg _bsd_in6_newaddrmsg
#define in6_nigroup _bsd_in6_nigroup
#define in6_nigroup_oldmcprefix _bsd_in6_nigroup_oldmcprefix
@@ -2048,7 +2065,6 @@
#define in_cksum_skip _bsd_in_cksum_skip
#define in_control _bsd_in_control
#define in_delayed_cksum _bsd_in_delayed_cksum
-#define in_delmulti _bsd_in_delmulti
#define in_domifattach _bsd_in_domifattach
#define in_domifdetach _bsd_in_domifdetach
#define inet6ctlerrmap _bsd_inet6ctlerrmap
@@ -2091,12 +2107,16 @@
#define in_mcast_loop _bsd_in_mcast_loop
#define inm_clear_recorded _bsd_inm_clear_recorded
#define inm_commit _bsd_inm_commit
+#define inm_disconnect _bsd_inm_disconnect
#define inm_lookup _bsd_inm_lookup
#define inm_lookup_locked _bsd_inm_lookup_locked
#define inm_print _bsd_inm_print
#define inm_record_source _bsd_inm_record_source
-#define inm_release_locked _bsd_inm_release_locked
-#define in_multi_mtx _bsd_in_multi_mtx
+#define inm_release_deferred _bsd_inm_release_deferred
+#define inm_release_list_deferred _bsd_inm_release_list_deferred
+#define in_multi_free_mtx _bsd_in_multi_free_mtx
+#define in_multi_list_mtx _bsd_in_multi_list_mtx
+#define in_multi_sx _bsd_in_multi_sx
#define inp_4tuple_get _bsd_inp_4tuple_get
#define inp_apply_all _bsd_inp_apply_all
#define in_pcballoc _bsd_in_pcballoc
@@ -2115,6 +2135,7 @@
#define in_pcbinshash _bsd_in_pcbinshash
#define in_pcbinshash_nopcbgroup _bsd_in_pcbinshash_nopcbgroup
#define in_pcbladdr _bsd_in_pcbladdr
+#define in_pcblist_rele_rlocked _bsd_in_pcblist_rele_rlocked
#define in_pcblookup _bsd_in_pcblookup
#define in_pcblookup_local _bsd_in_pcblookup_local
#define in_pcblookup_mbuf _bsd_in_pcblookup_mbuf
@@ -2687,6 +2708,7 @@
#define mii_pollstat _bsd_mii_pollstat
#define mii_tick _bsd_mii_tick
#define M_IOV _bsd_M_IOV
+#define M_IP6MADDR _bsd_M_IP6MADDR
#define M_IP6NDP _bsd_M_IP6NDP
#define M_IPSEC_INPCB _bsd_M_IPSEC_INPCB
#define M_IPSEC_MISC _bsd_M_IPSEC_MISC
@@ -2695,6 +2717,7 @@
#define M_IPSEC_SAQ _bsd_M_IPSEC_SAQ
#define M_IPSEC_SAR _bsd_M_IPSEC_SAR
#define M_IPSEC_SP _bsd_M_IPSEC_SP
+#define M_IPSEC_SPDCACHE _bsd_M_IPSEC_SPDCACHE
#define M_IPSEC_SR _bsd_M_IPSEC_SR
#define mi_startup _bsd_mi_startup
#define mld_change_state _bsd_mld_change_state
@@ -2832,6 +2855,8 @@
#define nd6_timer_ch _bsd_nd6_timer_ch
#define nd_defrouter _bsd_nd_defrouter
#define nd_prefix _bsd_nd_prefix
+#define net_epoch _bsd_net_epoch
+#define net_epoch_preempt _bsd_net_epoch_preempt
#define netisr_clearqdrops _bsd_netisr_clearqdrops
#define netisr_dispatch _bsd_netisr_dispatch
#define netisr_dispatch_src _bsd_netisr_dispatch_src
@@ -2872,8 +2897,10 @@
#define OF_finddevice _bsd_OF_finddevice
#define OF_getencprop _bsd_OF_getencprop
#define OF_getencprop_alloc _bsd_OF_getencprop_alloc
+#define OF_getencprop_alloc_multi _bsd_OF_getencprop_alloc_multi
#define OF_getprop _bsd_OF_getprop
#define OF_getprop_alloc _bsd_OF_getprop_alloc
+#define OF_getprop_alloc_multi _bsd_OF_getprop_alloc_multi
#define OF_getproplen _bsd_OF_getproplen
#define OF_hasprop _bsd_OF_hasprop
#define OF_init _bsd_OF_init
@@ -2896,6 +2923,7 @@
#define OF_seek _bsd_OF_seek
#define OF_setprop _bsd_OF_setprop
#define OF_test _bsd_OF_test
+#define ofw_bus_assigned_addresses_to_rl _bsd_ofw_bus_assigned_addresses_to_rl
#define ofwbus_driver _bsd_ofwbus_driver
#define ofw_bus_find_child _bsd_ofw_bus_find_child
#define ofw_bus_find_child_device_by_phandle _bsd_ofw_bus_find_child_device_by_phandle
@@ -3189,6 +3217,7 @@
#define pf_init_ruleset _bsd_pf_init_ruleset
#define pf_intr _bsd_pf_intr
#define pf_ioctl_lock _bsd_pf_ioctl_lock
+#define pf_ioctl_maxcount _bsd_pf_ioctl_maxcount
#define pfi_set_flags _bsd_pfi_set_flags
#define pfi_update_status _bsd_pfi_update_status
#define pf_keyhash _bsd_pf_keyhash
@@ -3270,6 +3299,7 @@
#define pfr_pool_get _bsd_pfr_pool_get
#define pfr_set_addrs _bsd_pfr_set_addrs
#define pfr_set_tflags _bsd_pfr_set_tflags
+#define pfr_table_count _bsd_pfr_table_count
#define pfr_tst_addrs _bsd_pfr_tst_addrs
#define pf_rules_lock _bsd_pf_rules_lock
#define pfr_update_stats _bsd_pfr_update_stats
@@ -3376,6 +3406,8 @@
#define pru_sopoll_notsupp _bsd_pru_sopoll_notsupp
#define pru_soreceive_notsupp _bsd_pru_soreceive_notsupp
#define pru_sosend_notsupp _bsd_pru_sosend_notsupp
+#define qgroup_config _bsd_qgroup_config
+#define qgroup_softirq _bsd_qgroup_softirq
#define r12a_beacon_init _bsd_r12a_beacon_init
#define r12a_beacon_set_rate _bsd_r12a_beacon_set_rate
#define r12a_c_cut_rf_read _bsd_r12a_c_cut_rf_read
@@ -4666,6 +4698,14 @@
#define sysctl_wunlock _bsd_sysctl_wunlock
#define sys_listen _bsd_sys_listen
#define system_base_info _bsd_system_base_info
+#define taskqgroup_adjust _bsd_taskqgroup_adjust
+#define taskqgroup_attach _bsd_taskqgroup_attach
+#define taskqgroup_attach_cpu _bsd_taskqgroup_attach_cpu
+#define taskqgroup_config_gtask_deinit _bsd_taskqgroup_config_gtask_deinit
+#define taskqgroup_config_gtask_init _bsd_taskqgroup_config_gtask_init
+#define taskqgroup_create _bsd_taskqgroup_create
+#define taskqgroup_destroy _bsd_taskqgroup_destroy
+#define taskqgroup_detach _bsd_taskqgroup_detach
#define TB_DRAIN_WAITER _bsd_TB_DRAIN_WAITER
#define tbr_dequeue_ptr _bsd_tbr_dequeue_ptr
#define tbr_get _bsd_tbr_get
@@ -4767,6 +4807,7 @@
#define tcp_offload_input _bsd_tcp_offload_input
#define tcp_offload_output _bsd_tcp_offload_output
#define tcp_offload_rcvd _bsd_tcp_offload_rcvd
+#define tcp_offload_tcp_info _bsd_tcp_offload_tcp_info
#define tcp_output _bsd_tcp_output
#define tcp_persmax _bsd_tcp_persmax
#define tcp_persmin _bsd_tcp_persmin
@@ -4798,6 +4839,7 @@
#define tcps_states _bsd_tcps_states
#define tcpstat _bsd_tcpstat
#define tcp_state_change _bsd_tcp_state_change
+#define tcp_switch_back_to_default _bsd_tcp_switch_back_to_default
#define tcp_syn_backoff _bsd_tcp_syn_backoff
#define tcp_timer_2msl _bsd_tcp_timer_2msl
#define tcp_timer_activate _bsd_tcp_timer_activate
@@ -4924,6 +4966,7 @@
#define tvtohz _bsd_tvtohz
#define ucom_attach _bsd_ucom_attach
#define ucom_cfg_is_gone _bsd_ucom_cfg_is_gone
+#define ucom_cnops _bsd_ucom_cnops
#define ucom_detach _bsd_ucom_detach
#define ucom_drain _bsd_ucom_drain
#define ucom_drain_all _bsd_ucom_drain_all
@@ -4931,6 +4974,7 @@
#define ucom_put_data _bsd_ucom_put_data
#define ucom_ref _bsd_ucom_ref
#define ucom_set_pnpinfo_usb _bsd_ucom_set_pnpinfo_usb
+#define ucom_set_usb_mode _bsd_ucom_set_usb_mode
#define ucom_status_change _bsd_ucom_status_change
#define ucom_unref _bsd_ucom_unref
#define udb _bsd_udb
@@ -4965,6 +5009,7 @@
#define uether_getmii _bsd_uether_getmii
#define uether_getsc _bsd_uether_getsc
#define uether_ifattach _bsd_uether_ifattach
+#define uether_ifattach_wait _bsd_uether_ifattach_wait
#define uether_ifdetach _bsd_uether_ifdetach
#define uether_ifmedia_upd _bsd_uether_ifmedia_upd
#define uether_init _bsd_uether_init
diff --git a/rtemsbsd/include/sys/disk_zone.h b/rtemsbsd/include/sys/disk_zone.h
new file mode 100644
index 00000000..936ffd88
--- /dev/null
+++ b/rtemsbsd/include/sys/disk_zone.h
@@ -0,0 +1 @@
+/* EMPTY */
diff --git a/rtemsbsd/include/sys/epoch.h b/rtemsbsd/include/sys/epoch.h
new file mode 100644
index 00000000..25000a6d
--- /dev/null
+++ b/rtemsbsd/include/sys/epoch.h
@@ -0,0 +1,141 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018, Matthew Macy <mmacy@freebsd.org>
+ * Copyright (c) 2018, embedded brains GmbH
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_EPOCH_H_
+#define _SYS_EPOCH_H_
+
+#include <sys/cdefs.h>
+#ifdef _KERNEL
+#include <sys/lock.h>
+#include <sys/pcpu.h>
+#include <rtems/score/percpudata.h>
+#include <rtems/score/threaddispatch.h>
+#endif
+#include <rtems/thread.h>
+#include <ck_epoch.h>
+
+struct epoch_record;
+
+struct epoch_tracker_mutex {
+ SLIST_ENTRY(epoch_tracker_mutex) etm_link; /* link to add to tracker */
+ rtems_mutex etm_mtx;
+ struct epoch_record *etm_record;
+};
+
+typedef struct epoch_tracker {
+ ck_epoch_section_t et_section;
+ TAILQ_ENTRY(epoch_tracker) et_link; /* link to add to record */
+ struct _Thread_Control *et_td; /* owner of this tracker */
+ SLIST_HEAD(, epoch_tracker_mutex) et_mtx;
+} *epoch_tracker_t;
+TAILQ_HEAD(epoch_tdlist, epoch_tracker);
+
+typedef struct ck_epoch_entry *epoch_context_t;
+#define epoch_context ck_epoch_entry
+
+#ifdef _KERNEL
+#define EPOCH_ALIGN CPU_CACHE_LINE_BYTES
+
+struct epoch_record {
+ ck_epoch_record_t er_record;
+ struct epoch_tdlist er_tdlist;
+ uint32_t er_cpuid;
+} __aligned(EPOCH_ALIGN);
+
+typedef struct epoch {
+ struct ck_epoch e_epoch __aligned(EPOCH_ALIGN);
+ uintptr_t e_pcpu_record_offset;
+ int e_flags;
+ SLIST_ENTRY(epoch) e_link; /* List of all epochs */
+} *epoch_t;
+
+extern struct epoch _bsd_global_epoch;
+#define global_epoch &_bsd_global_epoch
+
+extern struct epoch _bsd_global_epoch_preempt;
+#define global_epoch_preempt &_bsd_global_epoch_preempt
+
+#define EPOCH_PREEMPT 0x1
+#define EPOCH_LOCKED 0x2
+
+#define EPOCH_DEFINE(name, flags) \
+struct epoch name; \
+static PER_CPU_DATA_ITEM(struct epoch_record, name); \
+static void \
+epoch_##name##_sysinit(void) \
+{ \
+ \
+ _bsd_epoch_init(&name, PER_CPU_DATA_OFFSET(name), flags); \
+} \
+SYSINIT(epoch_##name, SI_SUB_TUNABLES, SI_ORDER_THIRD, \
+ epoch_##name##_sysinit, NULL)
+
+void _bsd_epoch_init(epoch_t epoch, uintptr_t pcpu_record_offset,
+ int flags);
+
+void epoch_enter_preempt(epoch_t epoch);
+void epoch_exit_preempt(epoch_t epoch);
+
+void epoch_wait(epoch_t epoch);
+void epoch_wait_preempt(epoch_t epoch);
+
+void epoch_call(epoch_t epoch, epoch_context_t ctx,
+ void (*callback) (epoch_context_t));
+
+int in_epoch(epoch_t epoch);
+int in_epoch_verbose(epoch_t epoch, int dump_onfail);
+
+#define EPOCH_GET_RECORD(cpu_self, epoch) PER_CPU_DATA_GET_BY_OFFSET( \
+ cpu_self, struct epoch_record, epoch->e_pcpu_record_offset)
+
+static __inline void
+epoch_enter(epoch_t epoch)
+{
+ Per_CPU_Control *cpu_self;
+ struct epoch_record *er;
+
+ cpu_self = _Thread_Dispatch_disable();
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ ck_epoch_begin(&er->er_record, NULL);
+}
+
+static __inline void
+epoch_exit(epoch_t epoch)
+{
+ Per_CPU_Control *cpu_self;
+ struct epoch_record *er;
+
+ cpu_self = _Per_CPU_Get();
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ ck_epoch_end(&er->er_record, NULL);
+ _Thread_Dispatch_enable(cpu_self);
+}
+#endif /* _KERNEL */
+#endif /* _SYS_EPOCH_H_ */
diff --git a/rtemsbsd/rtems/rtems-kernel-epoch.c b/rtemsbsd/rtems/rtems-kernel-epoch.c
new file mode 100644
index 00000000..9eb8487c
--- /dev/null
+++ b/rtemsbsd/rtems/rtems-kernel-epoch.c
@@ -0,0 +1,334 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018, Matthew Macy <mmacy@freebsd.org>
+ * Copyright (c) 2018, embedded brains GmbH
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <machine/rtems-bsd-kernel-space.h>
+
+#include <sys/types.h>
+#include <sys/kernel.h>
+#include <sys/epoch.h>
+
+#include <machine/cpu.h>
+
+#include <rtems.h>
+#include <rtems/irq-extension.h>
+#include <rtems/score/smpimpl.h>
+#include <rtems/score/threadimpl.h>
+#include <rtems/score/watchdogimpl.h>
+
+EPOCH_DEFINE(_bsd_global_epoch_preempt, EPOCH_PREEMPT);
+
+EPOCH_DEFINE(_bsd_global_epoch, 0);
+
+struct epoch_pcpu {
+ int cb_count;
+ Watchdog_Control wdg;
+ rtems_interrupt_server_request irq_srv_req;
+};
+
+static PER_CPU_DATA_ITEM(struct epoch_pcpu, epoch);
+
+static SLIST_HEAD(, epoch) epoch_list = SLIST_HEAD_INITIALIZER(epoch_list);
+
+CK_STACK_CONTAINER(struct ck_epoch_entry, stack_entry,
+ ck_epoch_entry_container)
+
+void
+_bsd_epoch_init(epoch_t epoch, uintptr_t pcpu_record_offset, int flags)
+{
+ uint32_t cpu_count;
+ uint32_t cpu_index;
+
+ ck_epoch_init(&epoch->e_epoch);
+ epoch->e_flags = flags;
+ epoch->e_pcpu_record_offset = pcpu_record_offset;
+
+ cpu_count = rtems_get_processor_count();
+
+ for (cpu_index = 0; cpu_index < cpu_count; ++cpu_index) {
+ Per_CPU_Control *cpu;
+ struct epoch_record *er;
+
+ cpu = _Per_CPU_Get_by_index(cpu_index);
+ er = EPOCH_GET_RECORD(cpu, epoch);
+ bzero(er, sizeof(*er));
+ ck_epoch_register(&epoch->e_epoch, &er->er_record, NULL);
+ TAILQ_INIT(__DEVOLATILE(struct epoch_tdlist *,
+ &er->er_tdlist));
+ er->er_cpuid = cpu_index;
+ }
+
+ SLIST_INSERT_HEAD(&epoch_list, epoch, e_link);
+}
+
+static void
+epoch_watchdog(Watchdog_Control *wdg)
+{
+ struct epoch_pcpu *epcpu;
+
+ epcpu = __containerof(wdg, struct epoch_pcpu, wdg);
+ _Watchdog_Per_CPU_insert_ticks(&epcpu->wdg,
+ _Watchdog_Get_CPU(&epcpu->wdg), 1);
+
+ if (RTEMS_PREDICT_FALSE(epcpu->cb_count != 0)) {
+ rtems_interrupt_server_request_submit(&epcpu->irq_srv_req);
+ }
+}
+
+static void
+epoch_call_handler(void *arg)
+{
+ struct epoch_pcpu *epcpu;
+ struct epoch *epoch;
+ ck_stack_entry_t *cursor, *head, *next;
+ ck_stack_t cb_stack;
+
+ epcpu = arg;
+ ck_stack_init(&cb_stack);
+
+ SLIST_FOREACH(epoch, &epoch_list, e_link) {
+ Per_CPU_Control *cpu_self;
+ struct epoch_record *er;
+ int npending;
+
+ cpu_self = _Thread_Dispatch_disable();
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ npending = er->er_record.n_pending;
+
+ if (npending != 0) {
+ ck_epoch_poll_deferred(&er->er_record, &cb_stack);
+ epcpu->cb_count -= npending - er->er_record.n_pending;
+ }
+
+ _Thread_Dispatch_enable(cpu_self);
+ }
+
+ head = ck_stack_batch_pop_npsc(&cb_stack);
+ for (cursor = head; cursor != NULL; cursor = next) {
+ struct ck_epoch_entry *entry;
+
+ entry = ck_epoch_entry_container(cursor);
+
+ next = CK_STACK_NEXT(cursor);
+ (*entry->function)(entry);
+ }
+}
+
+static void
+epoch_sysinit(void)
+{
+ uint32_t cpu_count;
+ uint32_t cpu_index;
+
+ cpu_count = rtems_get_processor_count();
+
+ for (cpu_index = 0; cpu_index < cpu_count; ++cpu_index) {
+ Per_CPU_Control *cpu;
+ struct epoch_pcpu *epcpu;
+
+ cpu = _Per_CPU_Get_by_index(cpu_index);
+ epcpu = PER_CPU_DATA_GET(cpu, struct epoch_pcpu, epoch);
+
+ _Watchdog_Preinitialize(&epcpu->wdg, cpu);
+ _Watchdog_Initialize(&epcpu->wdg, epoch_watchdog);
+ _Watchdog_Per_CPU_insert_ticks(&epcpu->wdg, cpu, 1);
+
+ rtems_interrupt_server_request_initialize(cpu_index,
+ &epcpu->irq_srv_req, epoch_call_handler, epcpu);
+ }
+}
+SYSINIT(epoch, SI_SUB_TUNABLES, SI_ORDER_SECOND, epoch_sysinit, NULL);
+
+static void
+epoch_enter_preempt_next(epoch_t epoch, epoch_tracker_t et)
+{
+ Per_CPU_Control *cpu_self;
+ ISR_lock_Context lock_context;
+ Thread_Control *executing;
+ struct epoch_record *er;
+
+ SLIST_INIT(&et->et_mtx);
+
+ _ISR_lock_ISR_disable(&lock_context);
+ cpu_self = _Thread_Dispatch_disable_critical(&lock_context);
+ executing = _Per_CPU_Get_executing(cpu_self);
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ TAILQ_INSERT_TAIL(&er->er_tdlist, et, et_link);
+ et->et_td = executing;
+ _ISR_lock_ISR_enable(&lock_context);
+
+ ck_epoch_begin(&er->er_record, &et->et_section);
+
+ _Thread_Pin(executing);
+ _Thread_Dispatch_enable(cpu_self);
+}
+
+static void
+epoch_exit_preempt_next(epoch_t epoch, epoch_tracker_t et)
+{
+ Per_CPU_Control *cpu_self;
+ ISR_lock_Context lock_context;
+ Thread_Control *executing;
+ struct epoch_record *er;
+ struct epoch_tracker_mutex *etm;
+
+ _ISR_lock_ISR_disable(&lock_context);
+ cpu_self = _Thread_Dispatch_disable_critical(&lock_context);
+ executing = _Per_CPU_Get_executing(cpu_self);
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ TAILQ_REMOVE(&er->er_tdlist, et, et_link);
+ _ISR_lock_ISR_enable(&lock_context);
+
+ ck_epoch_end(&er->er_record, &et->et_section);
+
+ _Thread_Unpin(executing, cpu_self);
+ _Thread_Dispatch_enable(cpu_self);
+
+ SLIST_FOREACH(etm, &et->et_mtx, etm_link) {
+ rtems_mutex_unlock(&etm->etm_mtx);
+ }
+}
+
+/* FIXME: Must be removed in next FreeBSD baseline update step. */
+static __thread epoch_tracker_t et;
+
+void
+epoch_enter_preempt(epoch_t epoch)
+{
+
+ epoch_enter_preempt_next(epoch, &et);
+}
+
+void
+epoch_exit_preempt(epoch_t epoch)
+{
+
+ epoch_exit_preempt_next(epoch, &et);
+}
+
+static void
+epoch_block_handler(struct ck_epoch *g __unused, ck_epoch_record_t *c __unused,
+ void *arg __unused)
+{
+ cpu_spinwait();
+}
+
+void
+epoch_wait(epoch_t epoch)
+{
+ Per_CPU_Control *cpu_self;
+
+ cpu_self = _Thread_Dispatch_disable();
+ ck_epoch_synchronize_wait(&epoch->e_epoch, epoch_block_handler, NULL);
+ _Thread_Dispatch_enable(cpu_self);
+}
+
+static void
+epoch_register_mutex(void *arg)
+{
+ struct epoch_tracker_mutex *etm;
+ struct epoch_record *er;
+ struct epoch_tracker *et;
+
+ etm = arg;
+ er = etm->etm_record;
+ et = TAILQ_FIRST(&er->er_tdlist);
+
+ if (et != NULL) {
+ etm->etm_mtx._Queue._owner = et->et_td;
+ _Thread_Resource_count_increment( et->et_td );
+ SLIST_INSERT_HEAD(&et->et_mtx, etm, etm_link);
+ }
+}
+
+static void
+epoch_block_handler_preempt(struct ck_epoch *g __unused,
+ ck_epoch_record_t *cr, void *arg __unused)
+{
+ struct epoch_record *er;
+ Per_CPU_Control *cpu_self;
+ uint32_t cpu_self_index;
+ struct epoch_tracker_mutex etm;
+
+ er = __containerof(cr, struct epoch_record, er_record);
+ cpu_self = _Per_CPU_Get();
+ cpu_self_index = _Per_CPU_Get_index(cpu_self);
+
+ rtems_mutex_init(&etm.etm_mtx, "epoch");
+ etm.etm_record = er;
+
+#ifdef RTEMS_SMP
+ if (cpu_self_index != er->er_cpuid) {
+ cpu_set_t set;
+
+ CPU_ZERO(&set);
+ CPU_SET((int)er->er_cpuid, &set);
+ _SMP_Multicast_action(sizeof(set), &set, epoch_register_mutex,
+ &etm);
+ } else {
+ epoch_register_mutex(&etm);
+ }
+#else
+ epoch_register_mutex(&etm);
+#endif
+
+ _Thread_Dispatch_enable(cpu_self);
+
+ rtems_mutex_lock(&etm.etm_mtx);
+ rtems_mutex_unlock(&etm.etm_mtx);
+ rtems_mutex_destroy(&etm.etm_mtx);
+
+ _Thread_Dispatch_disable();
+}
+
+void
+epoch_wait_preempt(epoch_t epoch)
+{
+
+ _Thread_Dispatch_disable();
+ ck_epoch_synchronize_wait(&epoch->e_epoch, epoch_block_handler_preempt,
+ NULL);
+ _Thread_Dispatch_enable(_Per_CPU_Get());
+}
+
+void
+epoch_call(epoch_t epoch, epoch_context_t ctx,
+ void (*callback) (epoch_context_t))
+{
+ Per_CPU_Control *cpu_self;
+ struct epoch_record *er;
+ struct epoch_pcpu *epcpu;
+
+ cpu_self = _Thread_Dispatch_disable();
+ epcpu = PER_CPU_DATA_GET(cpu_self, struct epoch_pcpu, epoch);
+ epcpu->cb_count += 1;
+ er = EPOCH_GET_RECORD(cpu_self, epoch);
+ ck_epoch_call(&er->er_record, ctx, callback);
+ _Thread_Dispatch_enable(cpu_self);
+}
diff --git a/rtemsbsd/rtems/rtems-kernel-jail.c b/rtemsbsd/rtems/rtems-kernel-jail.c
index d6ac6363..d6ce1dd0 100644
--- a/rtemsbsd/rtems/rtems-kernel-jail.c
+++ b/rtemsbsd/rtems/rtems-kernel-jail.c
@@ -103,7 +103,7 @@ struct prison prison0 = {
#else
.pr_flags = PR_HOST|_PR_IP_SADDRSEL,
#endif
- .pr_allow = PR_ALLOW_ALL,
+ .pr_allow = PR_ALLOW_ALL_STATIC
};
MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF);
diff --git a/rtemsbsd/sys/arm/lpc/if_lpe.c b/rtemsbsd/sys/arm/lpc/if_lpe.c
index 99016be3..40ac162e 100755
--- a/rtemsbsd/sys/arm/lpc/if_lpe.c
+++ b/rtemsbsd/sys/arm/lpc/if_lpe.c
@@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$");
#include <rtems/bsd/local/miibus_if.h>
#ifdef __rtems__
#include <machine/rtems-bsd-cache.h>
+#include <rtems/bsd/bsd.h>
#endif /* __rtems__ */
#ifdef DEBUG
@@ -224,8 +225,12 @@ lpe_attach(device_t dev)
{
struct lpe_softc *sc = device_get_softc(dev);
struct ifnet *ifp;
+#ifndef __rtems__
int rid, i;
uint32_t val;
+#else /* __rtems__ */
+ int rid;
+#endif /* __rtems__ */
sc->lpe_dev = dev;
#ifndef __rtems__
@@ -241,7 +246,7 @@ lpe_attach(device_t dev)
sc->lpe_enaddr[5] = 0x55;
}
#else /* __rtems__ */
- rtems_bsd_get_mac_address(device_get_name(sc->lpe_dev), device_get_unit(sc->lpe_dev), &sc->lpe_enaddr);
+ rtems_bsd_get_mac_address(device_get_name(sc->lpe_dev), device_get_unit(sc->lpe_dev), sc->lpe_enaddr);
#endif /* __rtems__ */
mtx_init(&sc->lpe_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
@@ -540,6 +545,9 @@ lpe_init_locked(struct lpe_softc *sc)
/* Enable receive */
mac1 = lpe_read_4(sc, LPE_MAC1);
+#ifdef __rtems__
+ (void)mac1;
+#endif /* __rtems__ */
lpe_write_4(sc, LPE_MAC1, /*mac1 |*/ LPE_MAC1_RXENABLE | LPE_MAC1_PASSALL);
lpe_write_4(sc, LPE_MAC2, LPE_MAC2_CRCENABLE | LPE_MAC2_PADCRCENABLE |
@@ -815,7 +823,7 @@ static void lpe_set_rxfilter(struct lpe_softc *sc)
hashh = 0;
if_maddr_rlock(ifp);
- TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
+ CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -1279,14 +1287,20 @@ lpe_init_rxbuf(struct lpe_softc *sc, int n)
{
struct lpe_rxdesc *rxd;
struct lpe_hwdesc *hwd;
+#ifndef __rtems__
struct lpe_hwstatus *hws;
+#endif /* __rtems__ */
struct mbuf *m;
bus_dma_segment_t segs[1];
+#ifndef __rtems__
int nsegs;
+#endif /* __rtems__ */
rxd = &sc->lpe_cdata.lpe_rx_desc[n];
hwd = &sc->lpe_rdata.lpe_rx_ring[n];
+#ifndef __rtems__
hws = &sc->lpe_rdata.lpe_rx_status[n];
+#endif /* __rtems__ */
m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
if (!m) {