Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-10-15 13:41:18 +0400
committerCorinna Vinschen <corinna@vinschen.de>2001-10-15 13:41:18 +0400
commit271a33443c6e9ce77eb1a06d8726c692da85ab16 (patch)
tree5d767490465fc8669042b16e899ffb1aca6163e2
parent48372ea6f139576feaccd942d7674d06abd3c396 (diff)
* uname.cc (uname): Use `wProcessorLevel' unless OS sets it wrong.
Use `dwProcessorType' then instead. * wincap.cc: Set flag has_valid_processorlevel appropriately. * wincap.h: Add flag has_valid_processorlevel.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/uname.cc22
-rw-r--r--winsup/cygwin/wincap.cc11
-rw-r--r--winsup/cygwin/wincap.h2
4 files changed, 36 insertions, 6 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index c2dda0be4..79b9b2e6a 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2001-10-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * uname.cc (uname): Use `wProcessorLevel' unless OS sets it wrong.
+ Use `dwProcessorType' then instead.
+ * wincap.cc: Set flag has_valid_processorlevel appropriately.
+ * wincap.h: Add flag has_valid_processorlevel.
+
2001-10-14 Christopher Faylor <cgf@redhat.com>
* dtable.cc (dtable::build_fhandler_from_name): Use PC_FULL to
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index b73dc970f..80bd31991 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -57,13 +57,23 @@ uname (struct utsname *name)
{
case PROCESSOR_ARCHITECTURE_INTEL:
unsigned int ptype;
- if (sysinfo.dwProcessorType < 3) /* Shouldn't happen. */
- ptype = 3;
- else if (sysinfo.dwProcessorType > 9) /* P4 */
- ptype = 6;
+ if (wincap.has_valid_processorlevel ())
+ {
+ if (sysinfo.wProcessorLevel < 3) /* Shouldn't happen. */
+ ptype = 3;
+ else if (sysinfo.wProcessorLevel > 9) /* P4 */
+ ptype = 6;
+ else
+ ptype = sysinfo.wProcessorLevel;
+ }
else
- ptype = sysinfo.dwProcessorType;
-
+ {
+ if (sysinfo.dwProcessorType == PROCESSOR_INTEL_386 ||
+ sysinfo.dwProcessorType == PROCESSOR_INTEL_486)
+ ptype = sysinfo.dwProcessorType / 100;
+ else
+ ptype = PROCESSOR_INTEL_PENTIUM / 100;
+ }
__small_sprintf (name->machine, "i%d86", ptype);
break;
case PROCESSOR_ARCHITECTURE_ALPHA:
diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc
index 4026167ad..d0f9c6dff 100644
--- a/winsup/cygwin/wincap.cc
+++ b/winsup/cygwin/wincap.cc
@@ -43,6 +43,7 @@ static NO_COPY wincaps wincap_unknown = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:false,
};
static NO_COPY wincaps wincap_95 = {
@@ -77,6 +78,7 @@ static NO_COPY wincaps wincap_95 = {
has_negative_pids:true,
has_unreliable_pipes:true,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:false,
};
static NO_COPY wincaps wincap_95osr2 = {
@@ -111,6 +113,7 @@ static NO_COPY wincaps wincap_95osr2 = {
has_negative_pids:true,
has_unreliable_pipes:true,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:false,
};
static NO_COPY wincaps wincap_98 = {
@@ -145,6 +148,7 @@ static NO_COPY wincaps wincap_98 = {
has_negative_pids:true,
has_unreliable_pipes:true,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_98se = {
@@ -179,6 +183,7 @@ static NO_COPY wincaps wincap_98se = {
has_negative_pids:true,
has_unreliable_pipes:true,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_me = {
@@ -213,6 +218,7 @@ static NO_COPY wincaps wincap_me = {
has_negative_pids:true,
has_unreliable_pipes:true,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_nt3 = {
@@ -247,6 +253,7 @@ static NO_COPY wincaps wincap_nt3 = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:false,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_nt4 = {
@@ -281,6 +288,7 @@ static NO_COPY wincaps wincap_nt4 = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:true,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_nt4sp4 = {
@@ -315,6 +323,7 @@ static NO_COPY wincaps wincap_nt4sp4 = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:true,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_2000 = {
@@ -349,6 +358,7 @@ static NO_COPY wincaps wincap_2000 = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:true,
+ has_valid_processorlevel:true,
};
static NO_COPY wincaps wincap_xp = {
@@ -383,6 +393,7 @@ static NO_COPY wincaps wincap_xp = {
has_negative_pids:false,
has_unreliable_pipes:false,
has_try_enter_critical_section:true,
+ has_valid_processorlevel:true,
};
wincapc NO_COPY wincap;
diff --git a/winsup/cygwin/wincap.h b/winsup/cygwin/wincap.h
index 038947636..2bb391454 100644
--- a/winsup/cygwin/wincap.h
+++ b/winsup/cygwin/wincap.h
@@ -44,6 +44,7 @@ struct wincaps
unsigned has_negative_pids : 1;
unsigned has_unreliable_pipes : 1;
unsigned has_try_enter_critical_section : 1;
+ unsigned has_valid_processorlevel : 1;
};
class wincapc
@@ -92,6 +93,7 @@ public:
bool IMPLEMENT (has_negative_pids)
bool IMPLEMENT (has_unreliable_pipes)
bool IMPLEMENT (has_try_enter_critical_section)
+ bool IMPLEMENT (has_valid_processorlevel)
#undef IMPLEMENT
};