Opened on 06/09/15 at 16:06:13
Closed on 06/11/15 at 15:11:26
#2364 closed defect (fixed)
pc386 build fails
Reported by: | hermann19829 | Owned by: | Joel Sherrill <joel.sherrill@…> |
---|---|---|---|
Priority: | normal | Milestone: | 4.11.1 |
Component: | unspecified | Version: | 4.11 |
Severity: | normal | Keywords: | pc386 |
Cc: | Pavel Pisa, Gedare Bloom | Blocked By: | |
Blocking: |
Description
When building RTEMS for pc386 make all fails after executing bootstrap and configure by
../rtems/configure --target=i386-rtems4.11 --enable-rtemsbsp=pc386 --enable-tests=samples --disable-posix
at entering .../samples/hello with
undefined reference to pthread_mutex_trylock and
undefined reference to pthread_mutex_unlock
When commenting lines 869-874, 891-892, 899-901 in development/rtems/src/rtems/c/src/lib/libbsp/i386/pc386/console/fb_vesa_rm.c
the build succeeds.
860 rtems_device_driver 861 frame_buffer_open( 862 rtems_device_major_number major, 863 rtems_device_minor_number minor, 864 void *arg 865 ) 866 { 867 printk( FB_VESA_NAME " open device\n" ); 868 869 //if (pthread_mutex_trylock(&vesa_mutex) != 0) 870 //{ 871 // printk( FB_VESA_NAME " could not lock vesa_mutex\n" ); 872 873 // return RTEMS_UNSATISFIED; 874 //} 875 876 return RTEMS_SUCCESSFUL; 877 878 } 879 880 /* 881 * fb_vesa device driver CLOSE entry point 882 */ 883 rtems_device_driver 884 frame_buffer_close( 885 rtems_device_major_number major, 886 rtems_device_minor_number minor, 887 void *arg 888 ) 889 { 890 printk( FB_VESA_NAME " close device\n" ); 891 //if (pthread_mutex_unlock(&vesa_mutex) == 0) 892 //{ 893 /* restore previous state. for VGA this means return to text mode. 894 * leave out if graphics hardware has been initialized in 895 * frame_buffer_initialize() */ 896 897 printk(FB_VESA_NAME ": close called.\n" ); 898 return RTEMS_SUCCESSFUL; 899 //} 900 901 //return RTEMS_UNSATISFIED; 902 }
Attachments (1)
Change History (8)
comment:1 Changed on 06/09/15 at 16:10:59 by hermann19829
comment:2 Changed on 06/09/15 at 17:09:13 by Joel Sherrill
This is a patch which makes the VBE_RM enabled only when POSIX is. I see the pthread mutex usage in three files and am not sure of the usage. It may be possible to replace all of the mutex usage with an atomic bool which indicates it is in use. The usage is really just to ensure only one open occurs at a time.
This disables the driver which I don't think is what we want. There are three files which need addressing. And start.S calls a vesa method which still needs to be provided. So the fix needs to be thought out.
$ git diff
diff --git a/c/src/lib/libbsp/i386/pc386/configure.ac b/c/src/lib/libbsp/i386/pc
index 469d5f5..f780b9c 100644
--- a/c/src/lib/libbsp/i386/pc386/configure.ac
+++ b/c/src/lib/libbsp/i386/pc386/configure.ac
@@ -15,6 +15,7 @@ RTEMS_CHECK_TOOL(OBJCOPY,objcopy,:)
RTEMS_PROG_CCAS
RTEMS_CHECK_NETWORKING
+RTEMS_CHECK_POSIX
RTEMS_CHECK_SMP
# Is this an Intel Edison?
@@ -131,7 +132,7 @@ RTEMS_BSPOPTS_SET([USE_VBE_RM],[*],[0])
RTEMS_BSPOPTS_HELP([USE_VBE_RM],
[Defined by default. Enables use of the Vesa Bios Extensions - real mode
interface, which enables graphical mode and introduce it upon bootup.])
-AM_CONDITIONAL(USE_VBE_RM,test "$USE_VBE_RM" = "1")
+AM_CONDITIONAL(USE_VBE_RM,test "$USE_VBE_RM" = "1" -a "${RTEMS_HAS_POSIX_API}"
if test X${CLOCK_DRIVER_USE_TSC} = X1 -a X${CLOCK_DRIVER_USE_8254} = X1 ; then
AC_MSG_ERROR([pc386 both TSC and 8254 specified for clock driver])
comment:3 Changed on 06/09/15 at 17:09:45 by Joel Sherrill
Cc: | Pavel Pisa added |
---|---|
Version: | 4.10 → 4.11 |
comment:4 Changed on 06/09/15 at 20:50:31 by Joel Sherrill
Cc: | Gedare Bloom added |
---|
Changed on 06/09/15 at 20:53:18 by Joel Sherrill
Attachment: | 0001-pc386-console-fb-.c-Use-atomics-to-avoid-dependency-.patch added |
---|
Switch from pthread to atomics since only used to avoid two users are the same time.
comment:5 Changed on 06/10/15 at 13:25:16 by Gedare Bloom
It would be cleaner to propose we add a public atomic API, but this change seems OK to me.
comment:6 Changed on 06/10/15 at 14:11:11 by Joel Sherrill
I agree and if this patch is OK. I was planning on filing a PR to add one. It can't just be thrown in quickly. :(
comment:7 Changed on 06/11/15 at 15:11:26 by Joel Sherrill <joel.sherrill@…>
Owner: | set to Joel Sherrill <joel.sherrill@…> |
---|---|
Resolution: | → fixed |
Status: | new → closed |
In [changeset:"becbedac784793f7701cbdbe2c6b3360e86d0778/rtems"]:
also doesn't work when enabling posix like: