From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?Q?Hans_S=F8ndergaard_=28HSO=29?= Date: Fri, 14 Aug 2009 09:31:31 +0200 Message-ID: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_0AB95BFCF14F984980DE7149C21D6B90065D58B59FFNDMAILB03VIA_" MIME-Version: 1.0 Subject: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "xenomai@xenomai.org" --_000_0AB95BFCF14F984980DE7149C21D6B90065D58B59FFNDMAILB03VIA_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I use objects of type: typedef struct object { RT_MUTEX *rt_lock; .. } Object; int err =3D rt_mutex_create (ob->rt_lock, NULL); printf ("[alloc.c]: rt_mutex_create err: %d; #%d \n", err, __LINE__); err =3D rt_mutex_acquire (ob->rt_lock, TM_INFINITE); printf ("[lock.c]: rt_mutex_acquire, err: %d; #%d \n", err, __LINE__); On creation, rt_mutex_create returns 0 (as expected). On acquiring, rt_mutex_acquire returns -3, but this return value is not included among the possible return values in t= he documentation of Mutex services. Could you please explain what this return value -3 means? Best regards Hans So --_000_0AB95BFCF14F984980DE7149C21D6B90065D58B59FFNDMAILB03VIA_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

I use objects of type:

 

typedef struct object {

=A0 RT_MUTEX *rt_lock;

=A0 ..

} Object;

 

int err =3D rt_mutex_create (ob->rt_lock, NULL);

printf ("[alloc.c]: rt_mutex_create err: %d; #%d \n", err, __LINE__);

 

err =3D rt_mutex_acquire (ob->rt_lock, TM_INFINITE);

printf ("[lock.c]: rt_mutex_acquire, err: %d; #%d \n", err, __LINE__);

 

On creation, rt_mutex_create returns 0 (as expected).

On acquiring, rt_mutex_acquire returns -3,

but this return value is not included among the possible return values in the documentation of Mutex services.

 

Could you please explain what this return value -3 means?

 

Best regards

Hans So=A0

 

 

--_000_0AB95BFCF14F984980DE7149C21D6B90065D58B59FFNDMAILB03VIA_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4A851FAB.1060800@domain.hid> Date: Fri, 14 Aug 2009 10:26:19 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> In-Reply-To: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-1?Q?=22Hans_S=F8ndergaard_=28HSO=29=22?= Cc: "xenomai@xenomai.org" Hans S=F8ndergaard (HSO) wrote: > I use objects of type: >=20 > =20 >=20 > typedef struct object { >=20 > RT_MUTEX *rt_lock; >=20 > .. >=20 > } Object; >=20 > =20 >=20 > int err =3D rt_mutex_create (ob->rt_lock, NULL); >=20 > printf ("[alloc.c]: rt_mutex_create err: %d; #%d \n", err, __LINE__); >=20 > =20 >=20 > err =3D rt_mutex_acquire (ob->rt_lock, TM_INFINITE); >=20 > printf ("[lock.c]: rt_mutex_acquire, err: %d; #%d \n", err, __LINE__); >=20 A question that may look stupid, is ob->rt_lock correctly initialised? Also, why using a malloc for this, why not doing: typedef struct object { RT_MUTEX rt_lock; /* ... */ } Object; int err =3D rt_mutex_create (&ob->rt_lock, NULL); err =3D rt_mutex_acquire (&ob->rt_lock, TM_INFINITE); > On creation, rt_mutex_create returns 0 (as expected). >=20 > On acquiring, rt_mutex_acquire returns -3, >=20 > but this return value is not included among the possible return values > in the documentation of Mutex services. > =20 >=20 > Could you please explain what this return value -3 means? 3 is ESRCH, what version of Xenomai are you using? --=20 Gilles From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4A852C64.9040008@domain.hid> Date: Fri, 14 Aug 2009 11:20:36 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> <4A851FAB.1060800@domain.hid> <0AB95BFCF14F984980DE7149C21D6B90065D58B5EA@FND-MAILB03.VIA.DK> In-Reply-To: <0AB95BFCF14F984980DE7149C21D6B90065D58B5EA@FND-MAILB03.VIA.DK> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-1?Q?=22Hans_S=F8ndergaard_=28HSO=29=22?= Cc: Xenomai help Hans S=F8ndergaard (HSO) wrote: > I am using Xenomai-2.4.3 together with Linux-2.6.24. > What does ESRCH mean? I do not know, I would need to look into the sources, but before any more search for an issue which may have already been resolved, could you try xenomai 2.4.8 and see if you get the same problem? Please do not forget to CC the mailing list. --=20 Gilles From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philippe Gerum In-Reply-To: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> Content-Type: text/plain; charset="UTF-8" Date: Fri, 14 Aug 2009 11:41:54 +0200 Message-Id: <1250242914.3019.6.camel@domain.hid> Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Hans =?ISO-8859-1?Q?S=F8ndergaard?= (HSO)" Cc: "xenomai@xenomai.org" On Fri, 2009-08-14 at 09:31 +0200, Hans S=C3=B8ndergaard (HSO) wrote: > I use objects of type: >=20 > =20 >=20 > typedef struct object { >=20 > RT_MUTEX *rt_lock; >=20 > .. >=20 > } Object; >=20 > =20 >=20 > int err =3D rt_mutex_create (ob->rt_lock, NULL); >=20 > printf ("[alloc.c]: rt_mutex_create err: %d; #%d \n", err, __LINE__); >=20 > =20 >=20 > err =3D rt_mutex_acquire (ob->rt_lock, TM_INFINITE); >=20 > printf ("[lock.c]: rt_mutex_acquire, err: %d; #%d \n", err, __LINE__); >=20 > =20 >=20 > On creation, rt_mutex_create returns 0 (as expected). >=20 > On acquiring, rt_mutex_acquire returns -3, >=20 -ESRCH. This means that for some reason, the internal handle copied by rt_mutex_create() to ob->rt_lock could not be found back in the system registry when calling rt_mutex_acquire(). Any chance ob->rt_lock may have been overwritten, or this mutex deleted by another thread in the meantime? In userland, RT_MUTEX is a structure containing an opaque long integer value. Maybe you could check that value (printf("%ld", ob->rt_lock.opaque)) right after rt_mutex_create() returns, and just before rt_mutex_acquire() is invoked. > but this return value is not included among the possible return values > in the documentation of Mutex services. >=20 > =20 >=20 > Could you please explain what this return value -3 means? >=20 > =20 >=20 > Best regards >=20 > Hans So =20 >=20 > =20 >=20 > =20 >=20 >=20 > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help --=20 Philippe. From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?B?SGFucyBTw7huZGVyZ2FhcmQgKEhTTyk=?= Date: Sat, 22 Aug 2009 09:49:54 +0200 Message-ID: <0AB95BFCF14F984980DE7149C21D6B9006E8E3078C@FND-MAILB03.VIA.DK> References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> <1250242914.3019.6.camel@domain.hid> In-Reply-To: <1250242914.3019.6.camel@domain.hid> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Philippe Gerum Cc: "xenomai@xenomai.org" VGhhbmsgeW91IHRvIGJvdGggR2lsbGVzIGFuZCBQaGlsaXBwZS4NCkkgZm9sbG93ZWQgdGhlIGFk dmlzZXMgZnJvbSB5b3UgYm90aDoNCnR5cGVkZWYgc3RydWN0IG9iamVjdCB7DQogIFJUX01VVEVY IHJ0X2xvY2s7IA0KICAgLi4gDQogfSBPYmplY3Q7DQoNCmFuZCB1c2VkOg0KICBwcmludGYoIiVs ZCIsIG9iLT5ydF9sb2NrLm9wYXF1ZSk7DQp0byBzZWUgb3V0cHV0Lg0KRm9yIGEgZ2VuZXJhbCBv cmllbnRhdGlvbjogSSBhbSByZXdyaXRpbmcgYSBKYXZhIFZNOiBKYW1WTSwgZm9yIGEgUHJlZGlj dGFibGUgSmF2YSBwcm9maWxlIChuZWFybHkgdGhlIHNhbWUgYXMgdGhlIFNhZmV0eSBDcml0aWNh bCBKYXZhIHByb3Bvc2FsIGZyb20gU1VOKS4gVGhlIHByb2ZpbGUgd2lsbCBiZSBwcmVzZW50ZWQg YXQgSlRSRVMgMjAwOS4NCkkgdXNlIFhlbm9tYWkgYXMgcmVhbC10aW1lIE9TLg0KVmgvUmVnYXJk cw0KSGFucyBTw7gNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFBoaWxpcHBl IEdlcnVtIFttYWlsdG86cnBtQHhlbm9tYWkub3JnXSANClNlbnQ6IDE0LiBhdWd1c3QgMjAwOSAx MTo0Mg0KVG86IEhhbnMgU8O4bmRlcmdhYXJkIChIU08pDQpDYzogeGVub21haS1oZWxwQGduYS5v cmcNClN1YmplY3Q6IFJlOiBbWGVub21haS1oZWxwXSBydF9tdXRleF9hY3F1aXJlIHJldHVybnMg LTMNCg0KT24gRnJpLCAyMDA5LTA4LTE0IGF0IDA5OjMxICswMjAwLCBIYW5zIFPDuG5kZXJnYWFy ZCAoSFNPKSB3cm90ZToNCj4gSSB1c2Ugb2JqZWN0cyBvZiB0eXBlOg0KPiANCj4gIA0KPiANCj4g dHlwZWRlZiBzdHJ1Y3Qgb2JqZWN0IHsNCj4gDQo+ICAgUlRfTVVURVggKnJ0X2xvY2s7DQo+IA0K PiAgIC4uDQo+IA0KPiB9IE9iamVjdDsNCj4gDQo+ICANCj4gDQo+IGludCBlcnIgPSBydF9tdXRl eF9jcmVhdGUgKG9iLT5ydF9sb2NrLCBOVUxMKTsNCj4gDQo+IHByaW50ZiAoIlthbGxvYy5jXTog cnRfbXV0ZXhfY3JlYXRlIGVycjogJWQ7ICMlZCBcbiIsIGVyciwgX19MSU5FX18pOw0KPiANCj4g IA0KPiANCj4gZXJyID0gcnRfbXV0ZXhfYWNxdWlyZSAob2ItPnJ0X2xvY2ssIFRNX0lORklOSVRF KTsNCj4gDQo+IHByaW50ZiAoIltsb2NrLmNdOiBydF9tdXRleF9hY3F1aXJlLCBlcnI6ICVkOyAj JWQgXG4iLCBlcnIsIF9fTElORV9fKTsNCj4gDQo+ICANCj4gDQo+IE9uIGNyZWF0aW9uLCBydF9t dXRleF9jcmVhdGUgcmV0dXJucyAwIChhcyBleHBlY3RlZCkuDQo+IA0KPiBPbiBhY3F1aXJpbmcs IHJ0X211dGV4X2FjcXVpcmUgcmV0dXJucyAtMywNCj4gDQoNCi1FU1JDSC4gVGhpcyBtZWFucyB0 aGF0IGZvciBzb21lIHJlYXNvbiwgdGhlIGludGVybmFsIGhhbmRsZSBjb3BpZWQgYnkNCnJ0X211 dGV4X2NyZWF0ZSgpIHRvIG9iLT5ydF9sb2NrIGNvdWxkIG5vdCBiZSBmb3VuZCBiYWNrIGluIHRo ZSBzeXN0ZW0NCnJlZ2lzdHJ5IHdoZW4gY2FsbGluZyBydF9tdXRleF9hY3F1aXJlKCkuDQoNCkFu eSBjaGFuY2Ugb2ItPnJ0X2xvY2sgbWF5IGhhdmUgYmVlbiBvdmVyd3JpdHRlbiwgb3IgdGhpcyBt dXRleCBkZWxldGVkDQpieSBhbm90aGVyIHRocmVhZCBpbiB0aGUgbWVhbnRpbWU/DQoNCkluIHVz ZXJsYW5kLCBSVF9NVVRFWCBpcyBhIHN0cnVjdHVyZSBjb250YWluaW5nIGFuIG9wYXF1ZSBsb25n IGludGVnZXINCnZhbHVlLiBNYXliZSB5b3UgY291bGQgY2hlY2sgdGhhdCB2YWx1ZSAocHJpbnRm KCIlbGQiLA0Kb2ItPnJ0X2xvY2sub3BhcXVlKSkgcmlnaHQgYWZ0ZXIgcnRfbXV0ZXhfY3JlYXRl KCkgcmV0dXJucywgYW5kIGp1c3QNCmJlZm9yZSBydF9tdXRleF9hY3F1aXJlKCkgaXMgaW52b2tl ZC4NCg0KPiBidXQgdGhpcyByZXR1cm4gdmFsdWUgaXMgbm90IGluY2x1ZGVkIGFtb25nIHRoZSBw b3NzaWJsZSByZXR1cm4gdmFsdWVzDQo+IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIE11dGV4IHNl cnZpY2VzLg0KPiANCj4gIA0KPiANCj4gQ291bGQgeW91IHBsZWFzZSBleHBsYWluIHdoYXQgdGhp cyByZXR1cm4gdmFsdWUgLTMgbWVhbnM/DQo+IA0KPiAgDQo+IA0KPiBCZXN0IHJlZ2FyZHMNCj4g DQo+IEhhbnMgU28gIA0KPiANCj4gIA0KPiANCj4gIA0KPiANCj4gDQo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFhlbm9tYWktaGVscCBtYWlsaW5n IGxpc3QNCj4gWGVub21haS1oZWxwQGduYS5vcmcNCj4gaHR0cHM6Ly9tYWlsLmduYS5vcmcvbGlz dGluZm8veGVub21haS1oZWxwDQotLSANClBoaWxpcHBlLg0KDQoNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4A8FC200.2@domain.hid> Date: Sat, 22 Aug 2009 12:01:36 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> <1250242914.3019.6.camel@domain.hid> <0AB95BFCF14F984980DE7149C21D6B9006E8E3078C@FND-MAILB03.VIA.DK> In-Reply-To: <0AB95BFCF14F984980DE7149C21D6B9006E8E3078C@FND-MAILB03.VIA.DK> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?IkhhbnMgU8O4bmRlcmdhYXJkIChIU08pIg==?= Cc: "xenomai@xenomai.org" Hans S=C3=B8ndergaard (HSO) wrote: > Thank you to both Gilles and Philippe. > I followed the advises from you both: > typedef struct object { > RT_MUTEX rt_lock;=20 > ..=20 > } Object; >=20 > and used: > printf("%ld", ob->rt_lock.opaque); > to see output. So, what is the result? Did you find the bug? --=20 Gilles. From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?B?SGFucyBTw7huZGVyZ2FhcmQgKEhTTyk=?= Date: Sat, 22 Aug 2009 20:44:18 +0200 Message-ID: <0AB95BFCF14F984980DE7149C21D6B9006E8E307A1@domain.hid> References: <0AB95BFCF14F984980DE7149C21D6B90065D58B59F@FND-MAILB03.VIA.DK> <1250242914.3019.6.camel@domain.hid> <0AB95BFCF14F984980DE7149C21D6B9006E8E3078C@FND-MAILB03.VIA.DK> <4A8FC200.2@domain.hid> In-Reply-To: <4A8FC200.2@domain.hid> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Xenomai-help] rt_mutex_acquire returns -3 List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gilles Chanteperdrix Cc: "xenomai@xenomai.org" PiBTbywgd2hhdCBpcyB0aGUgcmVzdWx0PyBEaWQgeW91IGZpbmQgdGhlIGJ1Zz8NClllcywgSSB0 aGluayBzby4gDQpUaGUgcHJvYmxlbSB3YXMgaW4gbXkgcmV3cml0aW5nIG9mIEphbVZNLiBJIGhh dmUgaW1wbGVtZW50ZWQgSmF2YSBQZXJpb2RpY0V2ZW50SGFuZGxlcnMgdXNpbmcgcGVyaW9kaWMg UlRfVEFTS3MsIGFuZCByZS1pbXBsZW1lbnRlZCBKYXZhIG9iamVjdCBhbGxvY2F0aW9uIHdpdGgg c3luY2hyb25pemVkIG1ldGhvZHMsIHVzaW5nIFJUX01VVEVYIHRvIHV0aWxpemUgdGhlIHByaW9y aXR5IGluaGVyaXRhbmNlIGluY2x1ZGVkIGluIFhlbm9tYWkuIEVhY2ggaGFuZGxlciBoYXMgYSBw cml2YXRlIG5hdGl2ZSBtZW1vcnlBcmVhIChubyBHYXJiYWdlIENvbGxlY3RvciBiZWNhdXNlIG9m IHJlYWwtdGltZSBjb25zdHJhaW50cykuDQpUaGUgYWxsb2NhdGlvbiBvZiBhIG5ldyBvYmplY3Qg YW5kIGNhbGxpbmcgaXRzIHN5bmNocm9uaXplZCBtZXRob2Qgbm93IGdpdmVzIHRoZSBvdXRwdXQ6 DQoNCj0+IE5hdGl2ZTogZW50ZXJOYXRpdmVNZW1BcmVhDQoNClthbGxvYy5jXTogcnRfbXV0ZXhf Y3JlYXRlIGVycjogMDsgDQpbYWxsb2MuY106IG9iLT5ydF9sb2NrLm9wYXF1ZTogNzU7IA0KDQpb bG9jay5jXTogb2ItPnJ0X2xvY2sub3BhcXVlOiA3NTsgDQpbbG9jay5jXTogcnRfbXV0ZXhfYWNx dWlyZSwgcmVzdWx0IDA7DQoNCltsb2NrLmNdOiBvYi0+cnRfbG9jay5vcGFxdWU6IDc1Ow0KW2xv Y2suY106IHJ0X211dGV4X3JlbGVhc2UsIHJlc3VsdCAwOyANCg0KW2FsbG9jLmNdOiBydF9tdXRl eF9kZWxldGUsIGVycjogMDsgDQpbYWxsb2MuY106IG9iLT5ydF9sb2NrLm9wYXF1ZTogNzU7IA0K DQo9PiBOYXRpdmU6IHJlc2V0TWVtQXJlYTogYWZ0ZXItYmVmb3JlPXVzZWQ6IDEwMjMyIC0gMTAy MDggPSAyNCBCeXRlczsNCg0KVGhpcyBzaG91bGQgYmUgT0suDQpJIGhhdmUgKHN0aWxsKSBwcm9i bGVtcywgaWYgSSB1c2UgU3lzdGVtLm91dC5wcmludGxuIGluIHRoZSBzeW5jaHJvbml6ZWQgbWV0 aG9kLCBidXQgbm93IEkga25vdyBpdCBpcyBiZWNhdXNlIG9mIG15IGluc3VmZmljaWVudCByZS1p bXBsZW1lbnRhdGlvbiBvZiBKYW1WTS4NClZoL1JlZ2FyZHMNCkhhbnMgU8O4DQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBHaWxsZXMgQ2hhbnRlcGVyZHJpeCBbbWFpbHRvOmdp bGxlcy5jaGFudGVwZXJkcml4QHhlbm9tYWkub3JnXSANClNlbnQ6IDIyLiBhdWd1c3QgMjAwOSAx MjowMg0KVG86IEhhbnMgU8O4bmRlcmdhYXJkIChIU08pDQpDYzogeGVub21haS1oZWxwQGduYS5v cmcNClN1YmplY3Q6IFJlOiBbWGVub21haS1oZWxwXSBydF9tdXRleF9hY3F1aXJlIHJldHVybnMg LTMNCg0KSGFucyBTw7huZGVyZ2FhcmQgKEhTTykgd3JvdGU6DQo+IFRoYW5rIHlvdSB0byBib3Ro IEdpbGxlcyBhbmQgUGhpbGlwcGUuDQo+IEkgZm9sbG93ZWQgdGhlIGFkdmlzZXMgZnJvbSB5b3Ug Ym90aDoNCj4gdHlwZWRlZiBzdHJ1Y3Qgb2JqZWN0IHsNCj4gICBSVF9NVVRFWCBydF9sb2NrOyAN Cj4gICAgLi4gDQo+ICB9IE9iamVjdDsNCj4gDQo+IGFuZCB1c2VkOg0KPiAgIHByaW50ZigiJWxk Iiwgb2ItPnJ0X2xvY2sub3BhcXVlKTsNCj4gdG8gc2VlIG91dHB1dC4NCg0KU28sIHdoYXQgaXMg dGhlIHJlc3VsdD8gRGlkIHlvdSBmaW5kIHRoZSBidWc/DQoNCi0tIA0KCQkJCQkgICAgR2lsbGVz Lg0KDQo=