Date: Thu, 15 Apr 2010 19:54:17 +0400 From: pluknet <pluknet@gmail.com> To: Nathan Whitehorn <nwhitehorn@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: HEADS UP: COMPAT_IA32 renamed COMPAT_FREEBSD32 Message-ID: <y2ta31046fc1004150854vf948cb4dw415c27b4c6bda20d@mail.gmail.com> In-Reply-To: <4BC71778.40505@freebsd.org> References: <20100312171758.GB31089@dragon.NUXI.org> <201004071549.41672.jhb@freebsd.org> <i2ka31046fc1004150306l619e5b2btc158df99f06627f3@mail.gmail.com> <201004150913.50097.jhb@freebsd.org> <4BC71778.40505@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On 15 April 2010 17:41, Nathan Whitehorn <nwhitehorn@freebsd.org> wrote:
> On 04/15/10 08:13, John Baldwin wrote:
>>
>> On Thursday 15 April 2010 6:06:24 am pluknet wrote:
>>
>>>
>>> On 7 April 2010 23:49, John Baldwin<jhb@freebsd.org> wrote:
>>>
>>>>
>>>> On Tuesday 06 April 2010 11:24:21 am Nathan Whitehorn wrote:
>>>>
>>>>>
>>>>> pluknet wrote:
>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> the interesting part for me is how to properly assert now a value of
>>>>>>
>>
>> e.g.
>>
>>>>>>
>>>>>> KINFO_PROC_SIZE varying on err.. different COMPAT_FREEBSD32 arches
>>>>>> (say, FreeBSD would have _kern_proc FreeBSD32 compat layer for
>>>>>>
>>
>> top/ps/).
>>
>>>>>>
>>>>>>
>>>>>
>>>>> Probably the cleanest thing would be to set KINFO_PROC_SIZE in
>>>>> machine/proc.h instead of where it is now, and then also define a
>>>>> KINFO_PROC32_SIZE or something in the same place. Also, that would be a
>>>>> really nice feature.
>>>>>
>>>>
>>>> Yes, I think this sounds like the best approach.
>>>>
>>>>
>>>
>>> Something quick& not clean (well, it passes universe) attached.
>>> So, don't shoot me, please ;-).
>>> It's unclear how to convert those mips o32/n32/o64/n64 though.
>>> I had to make definitions out of _KERNEL visibility as far as
>>> <sys/proc.h> is included from<sys/user.h> in !_KERNEL only too.
>>>
>>
>> Just one suggestion: don't make KINFO_PROC32 #define depenedent on
>> COMPAT_FREEBSD32. It should just be always defined. I think that is the
>> approach Nathan used for the 32-bit ELF machine type.
>>
>
> I agree. There's no harm in making it a global definition. You also need a
> KINFO_PROC32 for ia64, which also implements i386 compatibility. Other than
> that, the patch looks good to me.
> -Nathan
>
Thanks for your suggestions.
--
wbr,
pluknet
[-- Attachment #2 --]
Index: sys/arm/include/proc.h
===================================================================
--- sys/arm/include/proc.h (revision 206338)
+++ sys/arm/include/proc.h (working copy)
@@ -60,4 +60,6 @@
void *md_sigtramp;
};
+#define KINFO_PROC_SIZE 792
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/powerpc/include/proc.h
===================================================================
--- sys/powerpc/include/proc.h (revision 206338)
+++ sys/powerpc/include/proc.h (working copy)
@@ -46,4 +46,6 @@
struct mdproc {
};
+#define KINFO_PROC_SIZE 768
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/sparc64/include/proc.h
===================================================================
--- sys/sparc64/include/proc.h (revision 206338)
+++ sys/sparc64/include/proc.h (working copy)
@@ -51,4 +51,6 @@
void *md_sigtramp;
};
+#define KINFO_PROC_SIZE 1088
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/ia64/include/proc.h
===================================================================
--- sys/ia64/include/proc.h (revision 206338)
+++ sys/ia64/include/proc.h (working copy)
@@ -38,4 +38,7 @@
int __dummy; /* Avoid having an empty struct. */
};
+#define KINFO_PROC_SIZE 1088
+#define KINFO_PROC32_SIZE 768
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/mips/include/proc.h
===================================================================
--- sys/mips/include/proc.h (revision 206338)
+++ sys/mips/include/proc.h (working copy)
@@ -69,4 +69,10 @@
void mips_cpu_switch(struct thread *, struct thread *, struct mtx *);
void mips_cpu_throw(struct thread *, struct thread *);
+#ifdef __mips_n64
+#define KINFO_PROC_SIZE 1088
+#else
+#define KINFO_PROC_SIZE 816
+#endif
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/sun4v/include/proc.h
===================================================================
--- sys/sun4v/include/proc.h (revision 206338)
+++ sys/sun4v/include/proc.h (working copy)
@@ -51,4 +51,6 @@
void *md_sigtramp;
};
+#define KINFO_PROC_SIZE 1088
+
#endif /* !_MACHINE_PROC_H_ */
Index: sys/i386/include/proc.h
===================================================================
--- sys/i386/include/proc.h (revision 206338)
+++ sys/i386/include/proc.h (working copy)
@@ -57,6 +57,8 @@
struct proc_ldt *md_ldt; /* (t) per-process ldt */
};
+#define KINFO_PROC_SIZE 768
+
#ifdef _KERNEL
/* Get the current kernel thread stack usage. */
Index: sys/amd64/include/proc.h
===================================================================
--- sys/amd64/include/proc.h (revision 206338)
+++ sys/amd64/include/proc.h (working copy)
@@ -53,6 +53,9 @@
struct system_segment_descriptor md_ldt_sd;
};
+#define KINFO_PROC_SIZE 1088
+#define KINFO_PROC32_SIZE 768
+
#ifdef _KERNEL
/* Get the current kernel thread stack usage. */
Index: sys/sys/user.h
===================================================================
--- sys/sys/user.h (revision 206338)
+++ sys/sys/user.h (working copy)
@@ -87,34 +87,11 @@
#define KI_NSPARE_LONG 12
#define KI_NSPARE_PTR 7
-#ifdef __amd64__
-#define KINFO_PROC_SIZE 1088
-#endif
-#ifdef __arm__
-#define KINFO_PROC_SIZE 792
-#endif
-#ifdef __ia64__
-#define KINFO_PROC_SIZE 1088
-#endif
-#ifdef __i386__
-#define KINFO_PROC_SIZE 768
-#endif
-#ifdef __mips__
-#ifdef __mips_n64
-#define KINFO_PROC_SIZE 1088
-#else
-#define KINFO_PROC_SIZE 816
-#endif
-#endif
-#ifdef __powerpc__
-#define KINFO_PROC_SIZE 768
-#endif
-#ifdef __sparc64__
-#define KINFO_PROC_SIZE 1088
-#endif
+#ifndef _KERNEL
#ifndef KINFO_PROC_SIZE
#error "Unknown architecture"
#endif
+#endif /* !_KERNEL */
#define WMESGLEN 8 /* size of returned wchan message */
#define LOCKNAMELEN 8 /* size of returned lock name */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?y2ta31046fc1004150854vf948cb4dw415c27b4c6bda20d>
